我有这个数据结构,并试图编写一个函数,如果我们调用具有数据结构和子 ID 的函数,我们可以删除特定子项及其所有子项。数据结构如下所示:
const dataStructure = {
"id": 1,
"name": "Parent",
"parent_id": null,
"children": [
{
"id": 2,
"name": "P",
"parent_id": 1,
"children": []
},
{
"id": 3,
"name": "C",
"parent_id": 1,
"children": [
{
"id": 6,
"name": "E",
"parent_id": 3,
"children": []
}
]
},
{
"id": 4,
"name": "F",
"parent_id": 1,
"children": []
}
]
}
因此,如果我调用 removeFromTree(dataStructure , id)
之类的函数,那么应该删除特定的 Id
及其子项(如果有)。我已经在下面编写了一个函数,它将 dataStructure
和 name
作为参数,这似乎有效,但我需要使用 id 来实现它,以避免删除多个具有相同名称的团队。这是我已经写的:
function removeFromTree(dataStructure, name) {
if (dataStructure.name.trim() === name.trim()) {
dataStructure = undefined;
} else {
dataStructure.children.forEach((child, id) => {
if (!removeFromTree(child, name)) dataStructure.children.splice(id, 1);
});
}
return dataStructure;
}
任何关于使用 id 而不是名称来实现这个的建议都会很棒,谢谢。