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