可以使用数组的reduce()方法和Object.assign()方法来解决这个问题。首先按照共享的属性值对对象数组进行排序,然后使用reduce()方法遍历数组并将具有相同共享属性值的对象合并到一个新的对象中,在合并时可以使用Object.assign()方法。最后返回合并后的对象数组。
示例代码:
const arr = [ { id: 1, name: 'Alice', age: 25 }, { id: 2, name: 'Bob', age: 30 }, { id: 3, name: 'Charlie', age: 35 }, { id: 1, address: '123 Main St' }, { id: 2, address: '456 Park Ave' }, ];
const mergeBy = 'id';
const mergeArray = arr => { return Object.values(arr.reduce((acc, obj) => { if (!acc[obj[mergeBy]]) acc[obj[mergeBy]] = {}; acc[obj[mergeBy]] = Object.assign(acc[obj[mergeBy]], obj); return acc; }, {})); };
console.log(mergeArray(arr)); // 输出 [{ id: 1, name: 'Alice', age: 25, address: '123 Main St' }, { id: 2, name: 'Bob', age: 30, address: '456 Park Ave' }, { id: 3, name: 'Charlie', age: 35 }]