我有一系列日常数据,如下所示:
printf
每个元素都有一个x字段,即日期,y字段是数字。 该数组包含一整年的数据。
我期待一个数组的输出,其中每个元素在每个月都是y的总和,如:
write
我不确定javascript是否在SQL中有'GROUP BY'这样的函数,如果是,那么也许我可以使用一些reduce方法来累积每个月的数据。你能帮忙吗?
答案 0 :(得分: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; }