我的json是这样的:
var data = [{ "Id": 1, "Name": "a1", "Parent": null},
{ "Id": 2, "Name": "a2", "Parent": 1},
{ "Id": 3, "Name": "a3", "Parent": 2, "nb1": 30, "nb2": 40 },
{ "Id": 4, "Name": "a4", "Parent": 2, "nb1": 25, "nb2": 64 },
{ "Id": 5, "Name": "a5", "Parent": 1},
{ "Id": 6, "Name": "a6", "Parent": 5, "nb1": 2, "nb2": 6 },
{ "Id": 7, "Name": "a7", "Parent": 5, "nb1": 5, "nb2": 4 }];
使用d3js,我想用每个字段(nb1和nb2)的总和来构建层次json
我正在使用:
var treeData = d3.stratify().
id(function (d) { return d.Id; })
.parentId(function (d) { returnd.Parent; })(data);
treeData.sum(d=> d.nb1)
但它返回新的字段(值)和sum。我需要的是nb1的总和,并保持相同的字段名称nb1和nb2的总和,并保持相同的名称字段nb2的父母。
换句话说,定制d3js层次结构的sum函数。多谢了
1条答案
按热度按时间vyu0f0g11#
使用递归
buildNode
函数: