Javascript 删除递归数据结构中给定节点上方的所有内容
我有一个表单的数据结构Javascript 删除递归数据结构中给定节点上方的所有内容,javascript,data-structures,Javascript,Data Structures,我有一个表单的数据结构 node: { "name": "root"; "children": [ node ]; } 在问题的底部还有另一个例子 现在我想删除指定节点上方的所有节点,只保留剩余的子树 例如,给定树T A / \ B C / \ D E 函数getTree(T,'C')应该返回 C / \ D E 问题:有没有一种简单的方法来实现这一点 function ge
node: { "name": "root";
"children": [ node ]; }
在问题的底部还有另一个例子
现在我想删除指定节点上方的所有节点,只保留剩余的子树
例如,给定树T
A
/ \
B C
/ \
D E
函数getTree(T,'C')
应该返回
C
/ \
D E
问题:有没有一种简单的方法来实现这一点
function getTree(json, node) {
var tree = JSON.parse(json);
/* QUESTION: how do I remove everything not below the node with name===node here?
}
PS:更大的示例:
var tree = [
{
text: "Parent 1",
nodes: [
{
text: "Child 1",
nodes: [
{
text: "Grandchild 1"
},
{
text: "Grandchild 2"
}
]
},
{
text: "Child 2"
}
]
},
{
text: "Parent 2"
},
{
text: "Parent 3"
},
{
text: "Parent 4"
},
{
text: "Parent 5"
}
];
编辑:好的观点:我应该提到节点名称是唯一的。您可以迭代数组,查看节点是否有所需的文本,或者嵌套节点是否有找到的文本
const
getTree=(树,文本)=>{
让结果;
tree.some(node=>result=node.text==text
?节点
:getTree(node.nodes | |[],text)
);
返回结果;
},
树=[{text:“父1”,节点:[{text:“子1”,节点:[{text:“孙1”},{text:“孙2”}]},{text:“子2”},{text:“父2”},{text:“父3”},{text:“父4”},{text:“父5”};
log(getTree(树,“孙子1”);
log(getTree(树,“父1”)代码>
作为控制台包装{max height:100%!important;top:0;}
树是否有任何排序保证?如果有多个节点具有相同的标签,应返回哪个节点?最顶端的最左边的?@amon我编辑了帖子:节点名称是唯一的。