我无法让我的add_child
功能推到正确的位置。这是因为我的大脑有递归问题。任何善良的灵魂都可以帮我弄清楚我需要做什么吗?
我相信我需要跟踪全局数组的深度,然后添加孩子,self.data[key][i].push({...});
但我似乎无法做到正确。
这是我的jsFiddle
否则,这是我调用该函数来添加一些节点:
var m = new Map();
m.add(1);
m.add(2);
m.add(3);
m.add(4, 3);
m.add(5, 3);
m.add(6, 5);
m.add(7, 5);
console.log(m.data)
我正在尝试制作的示例:
[
{
node_id: 0,
children: null
},
{
node_id: 1,
children: [
{
node_id: 2
children: null
},
{
node_id: 3
children: [
}
]
},
]
这是我的函数调用者:
var Map = function() {
var self = this;
this.data = [];
this.add = function(node_id, parent_id) {
if (typeof parent_id == 'number') {
self.add_child(node_id, parent_id, self.data);
return;
}
self.data.push({
'node_id': node_id,
'children': []
});
return true;
}
this.add_child = function(node_id, needle, haystack) {
for (var key in haystack)
{
if (haystack[key].children.length != 0)
{
self.add_child(node_id, needle, haystack[key].children);
}
else
{
if (haystack[key].node_id == needle)
{
//console.log("Searching for needle: " + needle)
//console.log("Found it in: " + key)
//console.log("The Actual Data:")
//console.log(self.data[key]);
self.data[key].children.push({
'node_id': node_id,
'children': []
});
break;
}
}
}
}
};