javascript - 将对象属性转换为对象数组

标签 javascript dictionary

我想通过ObjectA属性合并包含ObjectB属性的ObjectA数组。

例如:

let myArray = [
  { name: 'Jeu', series: { name: 'testA', value: '89' } },
  { name: 'Dim', series: { name: 'testB', value: '490' } },
  { name: 'Dim', series: { name: 'testC', value: '978' } }
]

我想将其转换为

[
  { name: 'Jeu', series: { name: 'testA', value: '89' } },
  { name: 'Dim', series: [{ name: 'testB', value: '490' },{ name: 'testC', value: '978' } ] }
]

我可以通过简单的reduce/map循环来做到这一点吗?

最佳答案

您可以先使用reduce (使用一些 spread syntax )构建一个对象,以您想要的格式映射唯一名称和对象,并按名称对系列进行分组。然后,您可以简单地从该对象获取值。

const myArray = [
  { name: 'Jeu', series: { name: 'testA', value: '89' } },
  { name: 'Dim', series: { name: 'testB', value: '490' } },
  { name: 'Dim', series: { name: 'testC', value: '978' } }
];

const map = myArray.reduce(
  (acc, curr) => ({
    ...acc,
    [curr.name]: {
      name: curr.name,
      series: acc[curr.name]
        ? [...acc[curr.name].series, curr.series]
        : [curr.series]
    }
  }),
  {}
);

const output = Object.values(map);
console.log(output);

关于javascript - 将对象属性转换为对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61035762/

相关文章:

arrays - Swift:将字典组合成一个数组

javascript - 有没有办法让消费者使用 KafkaJS 获取最后 n 条消息?

javascript - li 的点击功能在 jQuery 中不起作用

java - 不同 JVM 之间共享的映射

python - 如何只打印按字母顺序嵌套在列表、字典中的内部字典的键?

python - 为什么 python 不将标准输入输入作为字典读取?

javascript - 如何更改 javascript 中发出的文本的大小和/或粗细?

javascript - 我需要帮助了解钛合金 (MVC) 开发

javascript - 有没有办法在 Canvas 上绘制部分超出屏幕范围的内容?

Python 3 : How to compare two tuples and find similar values?