我想通过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/