合并对象数组
使用指定的键将两个对象数组合并。
- 使用
Array.prototype.reduce()
和一个对象累加器来根据给定的prop
合并两个数组中的所有对象。 - 使用
Object.values()
将结果对象转换为数组并返回。
const combine = (a, b, prop) =>
Object.values(
[...a, ...b].reduce((acc, v) => {
if (v[prop])
acc[v[prop]] = acc[v[prop]]
? { ...acc[v[prop]], ...v }
: { ...v };
return acc;
}, {})
);
const x = [
{ id: 1, name: 'John' },
{ id: 2, name: 'Maria' }
];
const y = [
{ id: 1, age: 28 },
{ id: 3, age: 26 },
{ age: 3}
];
combine(x, y, 'id');
// [
// { id: 1, name: 'John', age: 28 },
// { id: 2, name: 'Maria' },
// { id: 3, age: 26 }
// ]