Javascript 当';是空的吗?
我想构建一个对象,该对象将Javascript 当';是空的吗?,javascript,javascript-objects,Javascript,Javascript Objects,我想构建一个对象,该对象将age作为键,该键的值将是一个名称与之对应的数组 阵列: const arr = [{ name: "Rita", age: 23 }, { name: "John", age: 25 }, { name: "Barbara", age: 23 }, ] 我想要的结果是: const obj = { 23: ["Rita&quo
age
作为键,该键的值将是一个名称与之对应的数组
阵列:
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
是不可编辑的
我怀疑的是,它不喜欢将首字母作为空对象({}
)。但我不能用键的首字母,因为它们应该是动态的
这是我的非工作解决方案:
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)=>{
返回{
…(acc |{}),
[curr.age]:[…(acc[curr.age]| |[]),curr.name]
}
}, {})
检查它。
(根据[当前日期]| |[])
。。。它是/必须是一个数组。只更新acc
有什么问题?这段代码是不可读的,做所有这些传播舞蹈不会增加任何价值。它可能会慢得多,因为在每次迭代中都会传播和创建对象<代码>if(acc[curr.age])acc[curr.age].push(curr.name)else acc[curr.age]=[curr.name];返回acc代码>