Javascript 如何递归获取父-子名称

Javascript 如何递归获取父-子名称,javascript,jquery,Javascript,Jquery,我试着让所有孩子的名字都成为他们的父母。我正在创建一棵树: GUI.prototype.buildTree = function(elements, parentId){ var response = []; for(var elem in elements){ if(elements[elem]['parent'] == parentId){ var childrens = this.buildTree(elements, element

我试着让所有孩子的名字都成为他们的父母。我正在创建一棵树:

GUI.prototype.buildTree = function(elements, parentId){
    var response = [];
    for(var elem in elements){
        if(elements[elem]['parent'] == parentId){
            var childrens = this.buildTree(elements, elements[elem]['id']);
            if(childrens.length > 0){
                elements[elem]['childrens'] = childrens;
            }
            response.push(elements[elem]);
        }
    }
    return response;
};
我从buildTree方法输入的内容如下所示:

[{
    "id" : 'x',
    "parent" : 0,
    "childrens" : [{
        "id" : 'y',
        "parent" : "x",
        "childrens" : [{
            "id" : 'z',
            "parent" : "y"
        }]
    }]
}]
我想输出如下内容:

[{
    "id": "x", 
    "childrenNames": ["y", "z"]
}]
最好的办法是用buildTree方法,但我不知道怎么做。但更简单的是,我认为应该为它创建另一种方法


我请求您的帮助。

此建议访问所有节点并获取节点的所有子节点

函数getChildren(数组){ var结果=[]; array.forEach(函数iter(a){ var children=[]; push({id:a.id,children:children}); 这个。推(a.id); if(Array.isArray(a.children)){ a、 儿童。forEach(国际热核实验堆,儿童); Array.prototype.splice.apply(this[this.length,0].concat(children)); } }, []); 返回结果; } var data=[{id:'x',父:0,子:[{id:'y',父:“x”,子:[{id:'z',父:“y”}]}]; log(getChildren(data))
。作为控制台包装{最大高度:100%!重要;顶部:0;}