我正在尝试通过复杂的 JSON 对象(例如this one )进行深度优先搜索,并输出具有以下新结构的新对象:
[
{
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?