[英]How to spread the accumulator in a reducer when's empty?
我想构建一个以age
为键的 object,该键的值将是一个名称对应的数组。
数组:
const arr = [{
name: "Rita",
age: 23
},
{
name: "John",
age: 25
},
{
name: "Barbara",
age: 23
},
]
我想要的结果:
const obj = {
23: ["Rita", "Barbara"],
25: ["John"]
}
我已经用reduce
构建了一些东西,但是说...(acc[curr.age] || {}), curr.name
是不可迭代的。
我的怀疑是它不喜欢将首字母作为空的 object ( {}
)。 但是我不能有一个带键的首字母,因为它们应该是动态的。
这是我的非工作解决方案:
const obj = arr.reduce((acc, curr) => {
return {
...(acc || {}),
[curr.age]: [...(acc[curr.age] || {}), curr.name]
}
}, {})
错误出现在...(acc[curr.age] || {})
上。 acc[curr.age]
应该是一个数组,不是吗? 看看您期望的最终结果。
const obj = arr.reduce((acc, curr) => {
return {
...(acc || {}),
[curr.age]: [...(acc[curr.age] || []), curr.name]
}
}, {})
上网查一下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.