d3 json计算最内循环

时间:2013-07-01 23:23:38

标签: d3.js

{
 "name": "Max",
 "value": 107,
 "children": [
  {
   "name": "Don",
   "value": 60,
   "children" [
     {"name": "CC", "value": 25},
     {"name": "Jim", "value": 35}
     ]
     },
  {
   "name": "David",
   "value": 47,
   "children": [
       {"name": "Jeff", "value": 32},
       {"name": "Buffy", "value": 15}
    ]
   }
  ]
 }

你如何计算小组的孩子?

data.children.length;

似乎不起作用。 (数据设置为等于js)

1 个答案:

答案 0 :(得分:1)

您想要的是树中的叶子数量。您可以递归遍历树来执行此操作:

getNumberOfLeaves = function (obj) {
    if (obj.children) {
        var res = 0; 
        obj.children.forEach(function(d){res+=getNumberOfLeaves(d)})
        return res
    }else {
        return 1
    }
}

jsFiddle:http://jsfiddle.net/chrisJamesC/PVhUn/