📜  合并重复数组对象 - Javascript (1)

📅  最后修改于: 2023-12-03 14:50:40.325000             🧑  作者: Mango

合并重复数组对象 - JavaScript

在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函数可以帮助你处理重复的数组对象!