我有多个使用相同代码的汇总,即:
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) }),
答案 0 :(得分:0)
最好的方法是声明一个函数:
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)})