2013-02-11 66 views
1

我有一个数据可视化目前提供了基于对象他们是否拥有孩子,像这样一类:d3.js - 确定嵌套深度(或子女的子女)

d3.json("skills.json", function(error, root) { 
    var node = svg.datum(root).selectAll(".node") 
    .data(pack.nodes) 
    .enter().append("g") 
    .attr("class", function(d) { return d.children ? "node" : "leaf node"; }) 

什么,我想做的是让他们根据自己的深度不同的类,或者至少是,根据他们是否有孩子的孩子,基本上是这样的(虽然我不知道语法):

.attr("class", function(d) { return d.children.children ? "node" ? d.children ? "branch" : "leaf node"; }); 

不任何人都知道正确的方法来做到这一点?

回答

2

您可以使用array.some来查看当前节点的任何子节点是否有子节点。

node.attr("class", function(d) { 
    return d.children ? (d.children.some(function(c) { return c.children; }) 
     ? "grandparent" 
     : "parent") 
     : "child"; 
}); 
-1

的D3.js API包含一个未记录的方法d.depth跟踪从根节点的深度。