空时如何将蓄能器散布在减速器中?

问题描述

我想构建一个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