d3树计数所有孩子

时间:2016-07-21 20:36:08

标签: javascript arrays d3.js tree

我有一个基于以下内容的d3树...

http://bl.ocks.org/mbostock/1093025

我如何计算所有孩子的数量?我试过这个,但它会计算树中的所有行...

$(".tree_badge").text(tree.links(nodes).length);

因此,在示例中,它应该计算所有子项,其中子项将是树中的橙色行(如群集,图形等中的那些)。

感谢您的任何见解!

2 个答案:

答案 0 :(得分:3)

我实际上遇到了类似的问题,我必须从特定节点下面的树中获取所有描述。在我的案例和你的答案中的答案是递归地下降树并在下来的路上做一些事情。应该看起来像这样。

var count;

function count_leaves(node){
    if(node.children){
        //go through all its children
        for(var i = 0; i<node.children.length; i++){
            //if the current child in the for loop has children of its own
            //call recurse again on it to decend the whole tree
            if (node.children[i].children){
                count_leaves(node.children[i]);
            }
            //if not then it is a leaf so we count it
            else{
                count++;
            }
        }
    }

注意:如果要计算节点下面的所有节点而不仅仅是树末端的节点,只需在if和else中添加count ++。

答案 1 :(得分:0)

只需使用 leaves 方法

enter image description here

因为我是从 google 来这里寻找 how to optimally count each children's descendants,所以解决方案是

enter image description here