このような複雑な JSON オブジェクトに対して深さ優先検索を実行し、次の新しい構造を持つ新しいオブジェクトを出力しようとしています。
[
{
name: "Blade Runner",
children : [
{Obj}, {Obj},{Obj}, ...
]
},
...
]
参照としてd3.js のrecurse()
関数を見てきましたが、既存の「子」配列なしで入力 JSON を指定して同様の関数を作成する方法について頭を悩ませているようには見えません。
function recurse(node, depth, nodes) {
//assumes children exist in node object
var childs = children.call(hierarchy, node, depth);
node.depth = depth;
nodes.push(node);
if (childs && (n = childs.length)) {
var i = -1, n, c = node.children = [], v = 0, j = depth + 1, d;
while (++i < n) {
d = recurse(childs[i], j, nodes);
d.parent = node;
c.push(d);
v += d.value;
}
if (sort) c.sort(sort);
if (value) node.value = v;
} else if (value) {
node.value = +value.call(hierarchy, node, depth) || 0;
}
return node;
}
上記の JSON 応答で DFS を実行するために、このような新しい関数をどのように記述しますか?