📅  最后修改于: 2023-12-03 14:50:40.325000             🧑  作者: Mango
在JavaScript中,我们经常需要处理数组对象。有时,我们可能会遇到数组对象中存在重复项的情况。为了简化操作,并提高运行效率,我们可以编写一个函数来合并重复的数组对象。
以下是一个示例的JavaScript函数,用于合并具有相同属性的数组对象:
/**
* 合并具有相同属性的数组对象
* @param {Array} arr - 包含数组对象的数组
* @param {string} prop - 用于比较的属性名称
* @returns {Array} - 合并后的数组对象
*/
function mergeDuplicateObjects(arr, prop) {
// 创建一个对象来存储合并后的结果
const merged = {};
// 遍历数组
for (let i = 0; i < arr.length; i++) {
const obj = arr[i];
// 获取当前对象的属性值
const key = obj[prop];
// 如果当前属性值不存在,将其作为键来存储对象
if (!merged[key]) {
merged[key] = obj;
} else {
// 如果当前属性值已存在,将现有对象的其他属性与当前对象进行合并
Object.assign(merged[key], obj);
}
}
// 返回合并后的结果作为数组
return Object.values(merged);
}
假设我们有以下包含学生信息的数组对象:
const students = [
{ id: 1, name: 'Alice', age: 18, grade: 'A' },
{ id: 2, name: 'Bob', age: 19, grade: 'B' },
{ id: 3, name: 'Alice', age: 20, grade: 'A' },
{ id: 4, name: 'Charlie', age: 18, grade: 'C' },
{ id: 5, name: 'Bob', age: 19, grade: 'B' },
];
我们可以使用 mergeDuplicateObjects
函数来合并具有相同名字的学生对象:
const mergedStudents = mergeDuplicateObjects(students, 'name');
console.log(mergedStudents);
输出结果如下:
```javascript
[
{ id: 1, name: 'Alice', age: 18, grade: 'A' },
{ id: 2, name: 'Bob', age: 19, grade: 'B' },
{ id: 4, name: 'Charlie', age: 18, grade: 'C' },
]
上述示例中,相同名字的学生对象被合并成一个对象,删除了重复的学生对象。
希望这个简单的JavaScript函数可以帮助你处理重复的数组对象!