数组去重 根据对象中得两个属性
时间: 2024-11-03 21:19:50 浏览: 17
知识图谱中得实体识别运用
数组去重,特别是针对由对象组成的数组,可以根据其中的两个属性来进行唯一性的判断。这种操作通常需要用到JavaScript的`Set`、`filter()`、`reduce()`或者`lodash`库中的相关函数。这里提供一种基于`Array.prototype.filter()`的方法,假设我们有两个属性`property1`和`property2`:
```javascript
function uniqueObjects(array, property1, property2) {
// 创建一个空对象作为哈希表,用于存储已经遇到过的对象组合
const hash = {};
// 使用filter()遍历数组并返回新的无重复项数组
return array.filter(obj => {
// 构造一个唯一的键,结合两个属性值
const key = `${obj[property1]}-${obj[property2]}`;
// 如果这个键不存在于哈希表中,说明这是一个新对象组合,加入并返回
if (!hash[key]) {
hash[key] = true;
return obj;
}
// 否则,跳过已存在的对象
else {
return false;
}
});
}
// 示例
const arr = [
{id: 1, name: 'John', age: 30},
{id: 1, name: 'Jane', age: 30}, // 重复项
{id: 2, name: 'Bob', age: 40},
{id: 1, name: 'John', age: 35} // 又一个重复项
];
const uniqueArr = uniqueObjects(arr, 'id', 'name');
console.log(uniqueArr);
```
这个函数会返回一个新的数组,其中只包含每个唯一对象组合。
阅读全文