js之如何删除多层数组嵌套的最后一层中的部分数据

 更新时间:2023年06月29日 10:32:39   作者:MYG_G  
这篇文章主要介绍了js之如何删除多层数组嵌套的最后一层中的部分数据问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

js删除多层数组嵌套的最后一层中的部分数据

我想删除arr中,第二个对象里面的aList中的{id:153,name: daad}的元素。

const arr = [
  {
    id: 1,
    name: 'llaq',
    aList: [
      {
        id: 20,    
        name: 'hdka',
      },
      {
        id: 12,
        name: 'loqas',
      },
    ]
  },
  {
    id: 2,
    name: '略略略',
    aList: [
      {
        id: 21221,
        name: 'dqd',
      },
      {
        id: 152,
        name: 'daad',
      },
      {
        id: 19522,
        name: 'kka',
      },
    ]
  },
  {
    id: 3,
    name: '哐哐哐',
    aList: [
      {
        id: 32,
        name: '32',
      },
      {
        id: 132,
        name: '32daa',
      },
      {
        id: 1232,
        name: 'da',
      },
    ]
  },
]
// id是aList中要删除的id
const handleClose = (id: number) => {
     const list = arr.map(item => {
     //修改被删除的item的数据
      item.aList = item?.aList?.filter(v => v.id !== id);
      return item;
    })
    console.log(list,'list');
  };

多层嵌套数组拿到每一层数据,可以组成新数组,也可以把内部数据改变

数据结构如下

data: [{
          id: 0,
          name: "1",
          children: [{
              id: 0 - 1,
              name: "0-1",
              children: [{
                  id: 0 - 1 - 1,
                  name: "0-1-1",
                  children: [{...}]
                }]
            }]
        }]

以此类推,数组里面还有数组,还有数组这种样式

处理方法

tree(res) {
      for (const item of res) {
    //这里可以处理很多数据,比如遍历一个数据数组匹配数据更改数据
        item.label = item.name;//如果label存在就是改变值,如果不存在就是往数组里面添加了一条新数据
        //如果item.children存在,就再调用一次函数,传数组给他,直到没有儿子结束
        if (item.children) {
          this.tree(item.children);
        }
      }
    },

遍历成新数组

tree(res,list) {
      for (const item of res) {
        list.push(item.id)
        if (item.children) {
          this.tree(item.children,list);
        }
      }
    },

传数组以及需要形成的新数组,循环一次push一次,直到循环条件不成立就结束

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • javascript+css实现单击颜色褪去效果

    javascript+css实现单击颜色褪去效果

    javascript+css实现单击颜色褪去效果...
    2007-08-08
  • KnockoutJS 3.X API 第四章之click绑定

    KnockoutJS 3.X API 第四章之click绑定

    click绑定主要作用是用于DOM元素被点击时调用相关JS函数。这篇文章主要介绍了KnockoutJS 3.X API 第四章之click绑定,感兴趣的朋友一起看看吧
    2016-10-10
  • js实现网页图片轮换播放

    js实现网页图片轮换播放

    这篇文章主要为大家详细介绍了js实现网页图片轮换播放,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • bootstrap警告框示例代码分享

    bootstrap警告框示例代码分享

    这篇文章主要为大家详细介绍了bootstrap警告框示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • JavaScript 最佳实践:帮你提升代码质量

    JavaScript 最佳实践:帮你提升代码质量

    在本篇教程中,我将指出一些重要的 JavaScript 最佳实践,让你不必去用另外一种艰难的方式来了解它们。准备好去升级你的代码吧
    2016-12-12
  • 原生JavaScript实现的无缝滚动功能详解

    原生JavaScript实现的无缝滚动功能详解

    这篇文章主要介绍了原生JavaScript实现的无缝滚动功能,结合实例形式详细分析了JavaScript无缝滚动具体实现步骤、相关操作技巧与注意事项,需要的朋友可以参考下
    2020-01-01
  • js中split函数的使用方法说明

    js中split函数的使用方法说明

    本篇文章主要是对js中split函数的使用方法进行了说明介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-12-12
  • js 编程笔记 无名函数

    js 编程笔记 无名函数

    无名函数,其中一个作用可能是生成新的函数对象的引用,主要是用于定义。
    2011-06-06
  • JavaScript中最常用的10种代码简写技巧总结

    JavaScript中最常用的10种代码简写技巧总结

    这篇文章主要总结了JavaScript中最常用的10种代码简写技巧的相关资料,其中包括三元操作符、短路求值简写方式、声明变量简写方法、if存在条件简写方法及JavaScript循环简写方法等等,分别给出了详细的示例代码供大家参考,需要的朋友们下面来一起看看吧。
    2017-06-06
  • JS设置时间无效问题的解决办法

    JS设置时间无效问题的解决办法

    在发送短信息验证码的时候要用到js设置时间倒序问题,有时候会导致js失效问题,怎么办呢?今天小编给大家分享JS设置时间无效问题的解决办法,需要的朋友参考下吧
    2017-02-02

最新评论