2017-10-14 46 views
0

我有多个汇总使用相同的代码,即:在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) }), 

回答

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