将对象数组转换为单个对象

2023-12-01

例如,我有以下数组 -

[
  {
    name: "abc",
    value: "1"
  },
  {
    name: "xyz",
    value: "2"
  },
  {
    name: "abc",
    value: "3"
  },
  {
    name: "abc",
    value: "4"
  },
  {
    name: "xyz",
    value: "5"
  },
]

现在,我想通过分组将该数组减少为单个对象value与相同的name一起形成一个数组。像这样的东西 -

{
  abc: [1, 3, 4],
  xyz: [2, 5]
}

我该如何使用reduce在 JavaScript 中?

我不确定这是否是正确的方法,但我尝试过类似的方法,但它没有给我所需的输出。

const data = arr.reduce((acc, item) => {
  return {
    ...acc,
    [item.name]: [item.value, acc[item.value]]
  };
});

您的答案是正确的,但您需要检查是否acc已经有一把钥匙item.name:

const data = [{
    name: "abc",
    value: "1"
  },
  {
    name: "xyz",
    value: "2"
  },
  {
    name: "abc",
    value: "3"
  },
  {
    name: "abc",
    value: "4"
  },
  {
    name: "xyz",
    value: "5"
  },
]

const result = data.reduce((acc, { name, value }) => ({
  ...acc,
  [name] : [...(acc[name] || []), value]
}), {})

console.log(result)

请注意,您可以使用对象解构来简化累积代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将对象数组转换为单个对象 的相关文章

随机推荐