【发布时间】:2020-08-11 06:48:43
【问题描述】:
我正在尝试使用 D3.nest 从现有数组中获取累积总和。
learnjsdata.com 网站有这个example 使用reduce:
var landSum = data.reduce(function(sum, d) {
return sum + d.land_area;
}, 0);
console.log(landSum);
我尝试将其调整为d3.nest rollup,如下所示。
var caseByDate =
[
{
"report_date": "2020-03-30",
"case_count": 1
},
{
"report_date": "2020-04-03",
"case_count": 1
},
{
"report_date": "2020-04-07",
"case_count": 1
}
]
var caseByDateCum = d3.nest()
.key(function(d) { return d.report_date; })
.rollup(function(v) {
return v.reduce(function(sum, d) {
return sum + d.case_count;
}, 0);
})
.entries(caseByDate)
.map(function(group) {
return {
report_date: group.key,
cum_case_count: group.value
}
});
console.log(caseByDateCum);
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
但不返回累积和,它只返回cum_case_count中的原始数据。我期望结果是:
var caseByDateCum =
[
{
"report_date": "2020-03-30",
"cum_case_count": 1
},
{
"report_date": "2020-04-03",
"cum_case_count": 2
},
{
"report_date": "2020-04-07",
"cum_case_count": 3
}
]
我找不到任何搜索有助于描述如何在 d3.nest rollup 中使用 reduce 来获得累计总数。
Reduce sum 应该是一个“累加器”,v 值是由key 值分组的数字数组。所以它应该在rollup 中工作。
我错过了什么?
【问题讨论】:
标签: javascript d3.js