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;
})
相关推荐
majingming12322 分钟前
FUNCTION
java·前端·javascript
A_nanda1 小时前
Vue项目升级
前端·vue3·vue2
SuperEugene1 小时前
Axios 接口请求规范实战:请求参数 / 响应处理 / 异常兜底,避坑中后台 API 调用混乱|API 与异步请求规范篇
开发语言·前端·javascript·vue.js·前端框架·axios
abigale032 小时前
【浏览器 API / 网络请求 / 文件处理】前端文件上传全流程:从基础上传到断点续传
前端·typescript·文件上传·vue cli
子兮曰2 小时前
Bun v1.3.11 官方更新全整理:新增功能、关键修复与升级验证
javascript·node.js·bun
Setsuna_F_Seiei2 小时前
AI 对话应用之页面滚动交互的实现
前端·javascript·ai编程
新缸中之脑2 小时前
追踪来自Agent的Web 流量
前端
wefly20173 小时前
从使用到原理,深度解析m3u8live.cn—— 基于 HLS.js 的 M3U8 在线播放器实现
java·开发语言·前端·javascript·ecmascript·php·m3u8
英俊潇洒美少年3 小时前
vue如何实现react useDeferredvalue和useTransition的效果
前端·vue.js·react.js
kyriewen114 小时前
给浏览器画个圈:CSS contain 如何让页面从“卡成PPT”变“丝滑如德芙”
开发语言·前端·javascript·css·chrome·typescript·ecmascript