【发布时间】:2020-06-12 19:18:26
【问题描述】:
我有以下对象数组:
const 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
}
]
我希望能够返回的内容如下:
[
{
createdOn: '2020-06-01',
value: 35 // sum of 12 + 23
},
{
createdOn: '2020-06-02',
value: 75 // sum of 35 + 40
},
{
createdOn: '2020-06-03',
value: 90 // sum of 75 + 15
}
]
所以我想要的结果是:
- 当有两个(或更多)对象具有相同的
createdOn日期时, 那么他们的values 应该为那个createdOn键添加到一个对象中。 - 每个对象的
value然后还需要加在一起,创建一个累积的value来自上一个对象。
经过一番搜索,我找到了some code,这有助于我实现第一点:
dataSet.reduce((acc, cur) => {
const date = cur.createdOn
const found = acc.find(elem => elem.createdOn === date)
if (found) {
found.value += cur.value
} else {
acc.push(cur)
}
return acc
}, [])
我就是想不通如何实现累计值部分。
提前致谢,周末愉快。
【问题讨论】:
-
取一个 sum 变量并在结果数组上再次循环。更新每个对象的累积和
标签: javascript arrays reduce accumulate