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我编辑了帖子:节点名称是唯一的。