在d3汇总中重用聚合相关代码的最优雅方法是什么?

时间:2017-10-14 17:53:00

标签: javascript d3.js

我有多个使用相同代码的汇总,即:

 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) }),

1 个答案:

答案 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)})