Javascript 显示折叠树中的子级数

Javascript 显示折叠树中的子级数,javascript,d3.js,Javascript,D3.js,我用的是姆博斯托克的 我需要显示每个节点中的子节点数和节点名称,如“flare(10)”、“analytics(3)” 我试着用 nodeEnter.append("text") .attr("x", function(d) { return d.children || d._children ? -10 : 10; }) .attr("dy", ".35em") .attr("text-anchor", function(d) { return d.children || d

我用的是姆博斯托克的

我需要显示每个节点中的子节点数和节点名称,如“flare(10)”、“analytics(3)”

我试着用

  nodeEnter.append("text")
  .attr("x", function(d) { return d.children || d._children ? -10 : 10; })
  .attr("dy", ".35em")
  .attr("text-anchor", function(d) { return d.children || d._children ? "end" : "start"; })
  .text(function(d) { return d.name + " (" + d.children.length() + ")"; })
  .style("fill-opacity", 1e-6);

但这似乎不起作用。如何获取节点的子节点数?

您的思路是正确的,但代码中存在两个问题

  • 长度是Javascript中数组的一个属性,因此无需括号即可访问:

    >>> L = [ 1, 2, 3 ]
    >>> L.length
    3
    
  • 您需要考虑以下事实:一些节点
    d
    具有
    d.children
    ,一些节点具有
    d.\u children
    ,而一些节点根本没有子节点。试着这样做:

    .text(function(d) {
        var numChildren = 0;
        if (d.children) numChildren = d.children.length;
        else if (d._children) numChildren = d._children.length;
        return d.name + " (" + numChildren + ")";
    })
    
  • 下面是你得到的: