js合并数组对象(将数组中具有相同属性对象合并到一起,组成一个新的数组)
要将数组中具有相同属性的对象合并到一起,可以使用reduce
方法来累计结果。以下是一个示例代码:
function mergeSimilarObjects(arr, key) {
return arr.reduce((acc, obj) => {
const existingObj = acc.find(item => item[key] === obj[key]);
if (existingObj) {
// 合并对象,这里以合并除`key`之外的属性为例
Object.keys(obj).forEach(prop => {
if (prop !== key) {
existingObj[prop] = (existingObj[prop] || 0) + (obj[prop] || 0);
}
});
} else {
acc.push(obj);
}
return acc;
}, []);
}
// 示例数组和属性
const array = [
{ id: 1, name: 'Alice', age: 25 },
{ id: 2, name: 'Bob', age: 30 },
{ id: 1, name: 'Alice', age: 28 },
{ id: 3, name: 'Charlie', age: 35 }
];
// 使用mergeSimilarObjects函数
const result = mergeSimilarObjects(array, 'id');
console.log(result);
// 输出: [ { id: 1, name: 'Alice', age: 53 }, { id: 2, name: 'Bob', age: 30 }, { id: 3, name: 'Charlie', age: 35 } ]
在这个例子中,mergeSimilarObjects
函数接受一个数组arr
和一个用于比较对象相似性的键key
。函数会找到具有相同key
值的对象,并合并它们的属性(除了key
本身)。如果没有找到相同的对象,则将当前对象加入结果数组。
评论已关闭