在d3中计算强制布局中节点的深度

时间:2015-08-31 09:49:13

标签: d3.js

我正在使用d3.js进行可折叠布局。我对以下代码的引用我想通过使用depth属性来计算被点击节点的深度(级别),但我将其视为未定义。还有另一种计算深度的方法吗?

1 个答案:

答案 0 :(得分:1)

计算flatten方法中每个节点的深度,如下所示。

function flatten(root) {
    var nodes = [], i = 0;  
    function recurse(node, depth) {     
        node.depth = depth;
        if (node.children) 
            node.children.forEach(function(n){  
                recurse(n,node.depth+1); 
            });
        if (!node.id) 
            node.id = ++i;
        nodes.push(node);
    }
    recurse(root,0);
    return nodes;
}

这是工作JSFiddle