小编uni*_*krz的帖子

在 JavaScript 中将 item 推入多维树状结构中

我有一个对象数组,它们像这样

var obj = [{
    id: 23,
    name: 'Test1',
    children: [{
         id: 24,
         name: 'Test2,
         children: [..]
    },{
         id: 25,
         name: 'Test2,
         children: [..]
    }],
},{..}]
Run Code Online (Sandbox Code Playgroud)

每个孩子可以有多个子孩子,所以基本上我试图表示一个类似结构的图形,类似于htmlparser的输出。

我需要这样的功能:

function(nodeId, json){}
Run Code Online (Sandbox Code Playgroud)

该函数需要使用 nodeId 在树中找到 json 对象,并将 json 作为该父对象的子对象插入。那就是我被卡住的地方。

我尝试编写这样的递归函数来搜索适当的节点,但是,当我必须将 json 插入到实际的 obj 数组中时就会出现问题。

function findNode(nodeId, json, obj){
    if(obj.id == nodeId){
        obj.children.push(json);
    }
    else{
        for(var i=0; i<obj.children.length; i++){
            findNode(nodeId, json, obj.children[i]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

似乎 json 被插入到递归函数的 obj 本地,而不是实际的根 obj。我怎样才能将它插入到父对象中?

javascript arrays tree json graph

4
推荐指数
1
解决办法
2444
查看次数

标签 统计

arrays ×1

graph ×1

javascript ×1

json ×1

tree ×1