【发布时间】:2021-02-23 13:02:25
【问题描述】:
我有这个对象数组:
[
{
user: 'User_1',
date: 1603926000000,
count: 3,
},
{
user: 'User_2',
date: 1603926000000,
count: 10,
},
{
user: 'User_2',
date: 1604876400000,
count: 1,
},
]
我用这个函数减少它:
const reducedDataByDate = dataByDate.reduce((acc, d) => {
const foundUser = acc.find((a) => a.user === d.user)
const value = { date: formatDate(d.date), count: d.count }
if (!foundUser) {
acc.push({ user: d.user, data: [value] })
} else {
foundUser.data.push(value)
}
return acc
}, [])
有了这个结果:
[
{
user: 'User_1',
data: [
{
date: '2020-10-29',
count: 10,
},
{
date: '2020-11-09',
count: 1,
},
],
},
{
user: 'User_2',
data: [
{
date: '2020-10-29',
count: 3,
},
],
},
]
理想情况下,我想摆脱将值推送到原始 acc 和 foundUser 数组,但不知道如何去做。非常感谢任何输入!
【问题讨论】:
-
你想要什么?
-
感谢您的评论。我正在寻找一种不改变原始数组的方法。我猜一个函数 collectDataForUser 为特定用户收集所有数据,然后将结果添加到 acc/foundUser。
-
foundUser.data[foundUser.data.length] = value
标签: javascript arrays functional-programming