js删除嵌套数组对象中的某项,并重置其后的索引

场景

我有一个航线数组,里面的项的结构中包含另一个数组对象,我要对actions中的某一项进行操作

javascript 复制代码
[
  {
    lng: 120.06494672131818,
    lat: 30.858276044948518,
    height: "120",
    aircraftHeading: 0,
    yawRotate: 0,
    pitchRotate: 0,
    rollRotate: 0,
    hangdiansetting: false,
    actions: [
      {
        actionId: 0,
        type: 6,
        actionActuatorFunc: "takePhoto",
        name: "单拍"
      },
      {
        actionId: 1,
        type: 11,
        actionActuatorFunc: "openAI",
        name: "开启AI识别"
      },
      {
        actionId: 2,
        type: 8,
        actionActuatorFunc: "panoShot",
        name: "全景拍照动作"
      }
    ],
    showflag: false,
    openInputFlag: false
  },
  {
    lng: 120.06788979926445,
    lat: 30.860012282995804,
    height: "120",
    aircraftHeading: 0,
    yawRotate: 0,
    pitchRotate: 0,
    rollRotate: 0,
    hangdiansetting: true,
    actions: [
      {
        actionId: 0,
        type: 11,
        actionActuatorFunc: "openAI",
        name: "开启AI识别"
      },
      {
        actionId: 1,
        type: 8,
        actionActuatorFunc: "panoShot",
        name: "全景拍照动作"
      }
    ],
    showflag: true,
    openInputFlag: false
  }
]

我要删除掉actionActuatorFunc为openAI的,重置数据后为下面的样子

javascript 复制代码
[
  {
    lng: 120.06494672131818,
    lat: 30.858276044948518,
    height: "120",
    aircraftHeading: 0,
    yawRotate: 0,
    pitchRotate: 0,
    rollRotate: 0,
    hangdiansetting: false,
    actions: [
      {
        actionId: 0,
        type: 6,
        actionActuatorFunc: "takePhoto",
        name: "单拍"
      },
      {
        actionId: 1,
        type: 8,
        actionActuatorFunc: "panoShot",
        name: "全景拍照动作"
      }
    ],
    showflag: false,
    openInputFlag: false
  },
  {
    lng: 120.06788979926445,
    lat: 30.860012282995804,
    height: "120",
    aircraftHeading: 0,
    yawRotate: 0,
    pitchRotate: 0,
    rollRotate: 0,
    hangdiansetting: true,
    actions: [
      {
        actionId: 0,
        type: 8,
        actionActuatorFunc: "panoShot",
        name: "全景拍照动作"
      }
    ],
    showflag: true,
    openInputFlag: false
  }
]

我写了一个封装的方法,可自动处理数据

javascript 复制代码
function processActions(actions) {
  return actions
    .filter(a => a.actionActuatorFunc !== 'openAI')
    .map((a, i) => ({
      ...a,
      actionId: i,
    }));
}

这个办法可以在我原有的组装方法上直接添加使用

javascript 复制代码
let points = this.hangdianList.map(item=>{
  item.actions.map(v=>{
    let arr = []
      ...
    v.actionActuatorFuncParam = arr;
    return v;
  })
  item.actions = processActions(item.actions);
  return item;
})
相关推荐
蔗理苦几秒前
2025-09-05 CSS4——浮动与定位
开发语言·前端·css·html·css3
浊浪载清辉1 小时前
《Html泛型魔法学院:用霍格沃茨风格网页教授集合框架》
前端·javascript·学习·html
Want5951 小时前
HTML元素周期表
前端·html
一只一只妖4 小时前
突发奇想,还未实践,在Vben5的Antd模式下,将表单从「JS 配置化」改写成「模板可视化」形式(豆包版)
前端·javascript·vue.js
悟能不能悟6 小时前
js闭包问题
开发语言·前端·javascript
秋秋_瑶瑶7 小时前
vue-amap组件呈现的效果图如何截图
前端·javascript·vue-amap
LFly_ice8 小时前
学习React-9-useSyncExternalStore
javascript·学习·react.js
gnip8 小时前
js上下文
前端·javascript
中草药z8 小时前
【Stream API】高效简化集合处理
java·前端·javascript·stream·parallelstream·并行流