问题描述
我想构建一个以 age
为键的对象,该键的值将是一个名称与之对应的数组。
数组:
const arr = [{
name: "Rita",age: 23
},{
name: "John",age: 25
},{
name: "Barbara",]
我想要的结果:
const obj = {
23: ["Rita","Barbara"],25: ["John"]
}
我已经用 reduce
构建了一些东西,但断言 ...(acc[curr.age] || {}),curr.name
不可迭代。
我怀疑它不喜欢将首字母作为空对象 ({}
)。但是我不能用键名首字母,因为它们应该是动态的。
这是我的非工作解决方案:
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]
}
},{})
检查它online。