2017-10-14 59 views
1

我有日常數據陣列象下面這樣:如何計算每月數據到數組中?

var data = [{x: '2017-01-01', y: 100}, {x: '2017-01-02', y: 99}, /* whole year. */]; 

每個元件具有X字段這是迄今爲止,Y字段是數。 數組包含一整年的數據。

我期待陣列的輸出,其中每個元素是y的總和每月,如:

var output = [10000, 9999, ...] 

我不知道如果JavaScript有類似的功能「GROUP BY」在SQL中,如果是,那麼也許我可以使用一些reduce方法來累積每個月的數據。你能幫忙嗎?

+0

是日期的[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)日期? –

回答

2

您可以使用帶有零值的所有月份的結果集,然後迭代數據,取月份,使其基於零,並用作添加每個項目的值的索引。

var data = [{ x: '2017-01-01', y: 100 }, { x: '2017-01-02', y: 99 }, { x: '2017-01-02', y: 99 }, { x: '2017-02-02', y: 10 }, { x: '2017-04-02', y: 42 }], 
 
    result = Array.apply(null, { length: 12 }).map(function() { return 0; }); 
 

 
data.forEach(function (o) { 
 
    result[o.x.slice(5, 7) - 1] += o.y; 
 
}); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }