在d3汇总中重用汇总相关代码的最优雅方式?
问题描述:
我有多个汇总使用相同的代码,即:在d3汇总中重用汇总相关代码的最优雅方式?
rolledUpData1 = d3.nest()
.key(function (d) { return d.city; })
.rollup(function (values) {
return {
yearWeek: toYearWeek(values[0].date) + ' Mon',
mondayDate: parseYearWeek(toYearWeek(values[0].date) + ' Mon'),
totalRevenue: d3.sum(values, function (d) { return parseFloat(d.price) }),
}), //
}
})
.entries(filteredData)
和:
rolledUpData2 = d3.nest()
.key(function (d) { return d.store; })
.rollup(function (values) {
return {
yearWeek: toYearWeek(values[0].date) + ' Mon',
mondayDate: parseYearWeek(toYearWeek(values[0].date) + ' Mon'),
totalRevenue: d3.sum(values, function (d) { return parseFloat(d.price) }),
}), //
}
})
.entries(filteredData)
什么是每个汇总不重复的代码的最优雅的方式?
yearWeek: toYearWeek(values[0].date) + ' Mon',
mondayDate: parseYearWeek(toYearWeek(values[0].date) + ' Mon'),
totalRevenue: d3.sum(values, function (d) { return parseFloat(d.price) }),
答
最好的办法是声明函数:
function defaultRollup(values) {
return {
yearWeek: toYearWeek(values[0].date) + ' Mon',
mondayDate: parseYearWeek(toYearWeek(values[0].date) + ' Mon'),
totalRevenue: d3.sum(values, function (d) { return parseFloat(d.price) }),
}
}
然后使用叫它
.rollup(function(values) { return defaultRollup(values)})