2013-02-11 67 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跟蹤從根節點的深度。