es6 树形结构 循环删除指定id
时间: 2023-09-05 16:10:41 浏览: 104
vue树, vue-tree,vue写的树形结构,包括删除,全选
3星 · 编辑精心推荐
要在 ES6 的树形结构中删除指定 ID 的节点,可以使用循环和递归相结合的方式来实现:
```javascript
function deleteNode(tree, nodeId) {
// 如果当前节点是要删除的节点,直接返回 null
if (tree.id === nodeId) {
return null;
}
// 如果当前节点有子节点,遍历子节点
if (tree.children) {
for (let i = 0; i < tree.children.length; i++) {
// 递归调用 deleteNode 函数,删除子节点
tree.children[i] = deleteNode(tree.children[i], nodeId);
}
// 过滤掉子节点中值为 null 的节点
tree.children = tree.children.filter(child => child !== null);
}
// 返回当前节点
return tree;
}
// 示例树形结构
const tree = {
id: 1,
children: [
{
id: 2,
children: [
{ id: 4 },
{ id: 5 }
]
},
{
id: 3,
children: [
{ id: 6 },
{ id: 7 }
]
}
]
};
// 删除 id 为 5 的节点
const newTree = deleteNode(tree, 5);
console.log(newTree);
/* 输出
{
id: 1,
children: [
{
id: 2,
children: [
{ id: 4 }
]
},
{
id: 3,
children: [
{ id: 6 },
{ id: 7 }
]
}
]
}
*/
```
在上面的代码中,`deleteNode` 函数接受两个参数:树形结构和要删除的节点的 ID。如果当前节点是要删除的节点,直接返回 `null`,表示这个节点已经被删除。如果当前节点有子节点,就递归调用 `deleteNode` 函数,删除子节点中的指定节点。然后,过滤掉子节点中值为 `null` 的节点,表示这些节点已经被删除。最后,返回当前节点,表示这个节点没有被删除。
阅读全文