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;
}
}
}
}
};