2017-10-14 1 views
0

I持って同じコードを使用する複数のロールアップ、すなわち: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)}) 
を使用してそれを呼び出します
関連する問題