js之如何删除多层数组嵌套的最后一层中的部分数据
作者: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一次,直到循环条件不成立就结束
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。