js 将对象数组中包含相同字段值的对象元素组合成新对象添加到原对象数组中
时间: 2024-12-15 16:22:10 浏览: 10
在JavaScript中,如果你想要将对象数组中具有相同字段值的对象合并成一个新的对象,并添加到原数组中,你可以使用`reduce()`函数结合条件判断来完成这个任务。下面是一个示例:
```javascript
function combineSimilarObjects(array) {
let combined = array.reduce((acc, obj) => {
for (let key in obj) {
if (!acc.hasOwnProperty(key)) { // 如果当前对象的key不存在于累积对象中
acc[key] = obj[key]; // 添加新的键值对
} else if (JSON.stringify(acc[key]) === JSON.stringify(obj[key])) { // 检查值是否相等
continue; // 如果值已存在,跳过
} else {
acc[key] = [acc[key], obj[key]]; // 否则将值合并为数组
}
}
return acc;
}, {});
return [...combined, ...array]; // 返回新合并对象和原始数组的组合
}
let originalArray = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 30 },
{ name: 'Alice', city: 'New York' },
];
let result = combineSimilarObjects(originalArray);
console.log(result);
```
这个函数首先遍历数组,对于每个对象,检查它是否有与之前遇到过的对象相同的键。如果有并且值也相同,就直接忽略;如果有不同的键或者不同的值,就把它们合并到同一个属性上。
阅读全文