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一次,直到循环条件不成立就结束

总结

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

相关文章

  • 如何防止INPUT按回车自动提交表单FORM

    如何防止INPUT按回车自动提交表单FORM

    为了防止INPUT按回车form自动提交,可以以下两种方法:增加一个隐藏的input。为input增加一个按键事件来阻止form提交。具体详情可以参考下本文
    2016-12-12
  • bootstrap折叠调用collapse()后data-parent不生效的快速解决办法

    bootstrap折叠调用collapse()后data-parent不生效的快速解决办法

    今天做的项目,用到了bootstrap的折叠功能,这个功能需要只展开一个折叠框,点击一个就会自动隐藏另一个,实现起来也很容易,但是在测试时同事提出了一个bug,怎么解决呢?今天小编通过本教程给大家分享下
    2017-02-02
  • 完美兼容多浏览器的js判断图片路径代码汇总

    完美兼容多浏览器的js判断图片路径代码汇总

    本文给大家汇总分享了几种使用javascript实现判断图片路径是否存在的代码,都是平时项目中用到过的,这里总结一下,有需要的小伙伴可以参考下。
    2015-04-04
  • js实现简易弹幕系统

    js实现简易弹幕系统

    这篇文章主要为大家详细介绍了js实现简易弹幕系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 在js(jquery)中获得文本框焦点和失去焦点的方法

    在js(jquery)中获得文本框焦点和失去焦点的方法

    文章介绍两个方法和种是利用javascript onFocus onBlur来判断焦点和失去焦点,加一种是利用jquery $("p").blur(); 或$("p").blur(fn)来实现,有需要的朋友可以参考一下
    2012-12-12
  • webpack HappyPack实战详解

    webpack HappyPack实战详解

    这篇文章主要介绍了webpack HappyPack实战详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • 利用JavaScript实现简单全选和全不选的思路和方法

    利用JavaScript实现简单全选和全不选的思路和方法

    最近开始练习js的基本操作,常常因为一些小疏忽导致页面效果无法实现,下面这篇文章主要给大家介绍了关于利用JavaScript实现简单全选和不全选的思路和方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • 小程序实现发表评论功能

    小程序实现发表评论功能

    这篇文章主要为大家详细介绍了小程序实现发表评论功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • javascript getElementsByClassName 和js取地址栏参数

    javascript getElementsByClassName 和js取地址栏参数

    为了从一大堆HTML代码中找出我们的树状菜单(也许有多个),我们先来实现一个通过className找DOM节点的方法:getElementsByClassName。这是对浏览器自有DOM方法的一个简单但实用的扩充。
    2010-01-01
  • JS面试之手写节流防抖详解

    JS面试之手写节流防抖详解

    作为一个程序员,代码实现才是能力体现,在大部分面试的时候,我们都会被要求手写代码实现一个功能,本文总结了一下经常被面试官问到的节流和防抖功能的实现,分享给有需要的小伙伴
    2023-07-07

最新评论