js 树状数据怎么删除指定key的节点

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

回到顶部