var dataset = [
{'color': 'red', 'amount': 10},
{'color': 'green', 'amount': 10},
{'color': 'red', 'amount': 30},
{'color': 'blue', 'amount': 20}
];
我想将数据集折叠到newDataset数组中,只使用每种颜色中的一种颜色添加了如下所示的amount属性:
newDataset = [
{'color': 'red', 'amount': 40}, //combined 2 rows
{'color': 'green', 'amount': 10},
{'color': 'blue', 'amount': 20}
]
我在javascript中使用for循环成功完成此操作,但想知道是否有d3.js辅助函数这样的情况?我似乎无法在文档中找到一个,但我不是最好的文档阅读器......
答案 0 :(得分:0)
d3.nest()就是这样。
d3.nest().key(function(d){return d.color;})
.rollup(function(a){
return a.reduce(function(p,c) {
return p+c.amount;
},0)})
.entries(dataset)
.reduce(function(p,c) {p.push({ 'color': c.key, 'amount': c.values });return p;},[]); // <-- added to satisfy comments below.