我想通过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循环来做到这一点吗?
答案 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);