2 回答
TA贡献1839条经验 获得超15个赞
我会这样做。首先计算每个不同值的累积值,然后将生成的映射转换回数组:createdOn
const map = dataSet.reduce((acc, {createdOn, value}) => {
acc[createdOn] = value + (acc[createdOn] || 0);
return acc;
}, {});
const result = Object.entries(map).map(([key, value], index) => ({
createdOn: key,
value: value
}));
result.forEach((item, index) => {
if (index) {
item.value += result[index - 1].value;
}
});
TA贡献1829条经验 获得超4个赞
这个怎么样:
var dataSet = [ { createdOn: '2020-06-01', id: 1, value: 12 }, { createdOn: '2020-06-01', id: 2, value: 23 }, { createdOn: '2020-06-02', id: 3, value: 40 }, { createdOn: '2020-06-03', id: 4, value: 15 }];
var finalResult = Object.values(dataSet.reduce((acc, {createdOn, value})=>{
acc[createdOn] = acc[createdOn] || {createdOn, value:0};
acc[createdOn].value+=value;
return acc;
},{})).map((e,i,self)=>(e.value+=self[i-1] ? self[i-1].value : 0, e));
console.log(finalResult);
添加回答
举报