首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何根据2个属性删除数组中的重复对象和原始值?

要根据两个属性删除数组中的重复对象和原始值,可以使用JavaScript中的Array.prototype.filter()方法结合Map对象来实现。以下是一个示例代码:

代码语言:txt
复制
function removeDuplicates(arr, prop1, prop2) {
  const map = new Map();
  return arr.filter(item => {
    const key = `${item[prop1]}-${item[prop2]}`;
    if (map.has(key)) {
      return false;
    } else {
      map.set(key, true);
      return true;
    }
  });
}

// 示例数组
const data = [
  { id: 1, name: 'Alice', age: 25 },
  { id: 2, name: 'Bob', age: 30 },
  { id: 3, name: 'Alice', age: 25 },
  { id: 4, name: 'Charlie', age: 35 },
  { id: 5, name: 'Bob', age: 30 }
];

// 删除重复对象
const uniqueData = removeDuplicates(data, 'name', 'age');
console.log(uniqueData);

解释

  1. removeDuplicates函数:
    • 接受三个参数:数组arr,以及两个属性名prop1prop2
    • 使用Map对象来存储已经遇到的键值对。
    • 使用filter方法遍历数组,对于每个元素,生成一个由两个属性值组成的唯一键(例如name-age)。
    • 如果这个键已经存在于Map中,则过滤掉该元素;否则,将其添加到Map中并保留该元素。
  • 示例数组:
    • 包含一些具有重复nameage属性的对象。
  • 调用removeDuplicates函数:
    • 传入示例数组和两个属性名nameage
    • 输出结果是一个去重后的数组。

应用场景

  • 这种方法适用于需要根据多个属性去重数组对象的场景,例如在数据处理、数据清洗、去重统计等。

参考链接

通过这种方法,你可以有效地根据两个属性删除数组中的重复对象和原始值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 领券