我有一个对象数组,它们像这样
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。我怎样才能将它插入到父对象中?