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;
})
相关推荐
万少2 小时前
Vibe Coding不停歇,移动端 TRAE SOLO 让你用手机也能编程啦
前端·javascript·后端
kyriewen112 小时前
WebAssembly:前端界的“外挂”,让C++代码在浏览器里跑起来
开发语言·前端·javascript·c++·单元测试·ecmascript
烛衔溟3 小时前
TypeScript 接口的基本使用 —— 定义对象形状
前端·javascript·typescript
铁皮饭盒4 小时前
成为AI全栈 - 第3课:路由 RESTful Elysia 状态码 设计规范
前端·后端·全栈
顾昂_4 小时前
Web 性能优化完全指南
前端·面试·性能优化
IT乐手4 小时前
Claude Code + Qwen 的配置方法
javascript·claude
前端程序媛-Tian5 小时前
前端 AI 提效实战:从 0 到 1 打造团队专属 AI 代码评审工具
前端·人工智能·ai
支付宝体验科技5 小时前
Ant Design Pro v6.0.0 发布
前端
T畅N5 小时前
审批流设计器(前端)
前端·elementui·vue·html·流程图·js
AlunYegeer5 小时前
JAVA,以后端的视角理解前端。在全栈的路上迈出第一步。
java·开发语言·前端