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;
})
相关推荐
数字化顾问1 分钟前
解析前端框架 Axios 的设计理念与源码:从零手写一个支持 HTTP/3 的“类 Axios”最小核
前端
二个半engineer6 分钟前
微前端中iframe集成方式与使用微前端框架方式对比
前端·前端框架
小菜全17 分钟前
《WebAssembly:前端开发的新可能》
前端·javascript
余防22 分钟前
CSRF跨站请求伪造
前端·安全·web安全·csrf
兮山与27 分钟前
前端2.0
前端
南风木兮丶34 分钟前
Vue 项目安装 @antfu/eslint-config 保姆级教程
前端·javascript·vue.js
万少1 小时前
记 HarmonyOS 开发中的一个小事件 怒提华为工单
前端·harmonyos
未来之窗软件服务1 小时前
万象EXCEL开发(六)excel单元格运算逻辑 ——东方仙盟金丹期
前端·excel·仙盟创梦ide·东方仙盟·万象excel
Mintopia1 小时前
🚀 Cesium-Kit:10 秒为你的 Cesium 项目添加动态光效标记
前端·javascript·cesium
Mintopia1 小时前
🌩️ 云边协同架构下的 WebAI 动态资源调度技术
前端·javascript·aigc