将Object属性转换为对象数组

时间:2020-04-04 22:47:02

标签: 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' } }
]

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

1 个答案:

答案 0 :(得分:1)

您可以首先使用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);