js 树状数据怎么删除指定key的节点
根据id 11 删除指定节点,谢谢
[ {
id: '1',
name: 'a',
pid: '0',
children: [
{
id: '11',
name: 'a-1',
pid: '1',
children: [
{
id: '111',
name: 'a-1-1',
pid: '11',
children: null
}
]
}
]
},
{
id: '2',
name: 'b',
pid: '0',
children: null,
}
]
回答:
就遍历找就行了,记录父元素,找到了按索引删除就好了。
回答:
递归就行了, 简单写了下:
function filterDel(arr) { arr.map((item, index) => {
if(item.id == '11') {
arr.splice(index, 1)
}
if(item.children) {
filterDel(item.children)
}
})
return arr
}
回答:
var data =[ {
id: '1',
name: 'a',
pid: '0',
children: [
{
id: '11',
name: 'a-1',
pid: '1',
children: [
{
id: '111',
name: 'a-1-1',
pid: '11',
children: null
}
]
}
]
},
{
id: '2',
name: 'b',
pid: '0',
children: null,
}
];
var delTree=(data,id)=> (index = data.findIndex(item=>((flag = item.id==id),(flag ? flag : delTree(item.children||[], id)))),data.splice(index,index==-1 ? 0 : 1),false);
delTree(data,11);
回答:
// 改变原数组function deleteNode(arr, targetId) {
for (let i = 0; i < arr.length; i++) {
const node = arr[i];
if (node.id === targetId) {
arr.splice(i, 1);
return;
}
// 判断children存在并且有数据
if (Array.isArray(node.children) && node.children.length) {
return deleteNode(node.children, targetId);
}
}
}
deleteNode(a, "11");
console.log(a);
以上是 js 树状数据怎么删除指定key的节点 的全部内容, 来源链接: utcz.com/p/935935.html