引言
在日常开发中,经常会遇到需要对二维对象数组进行去重操作的需求。而对于对象数组的去重,可以根据对象的某一属性进行判断,如果该属性的值相同,则认为对象是重复的。本文将介绍如何利用 JavaScript 实现二维对象数组的去重操作。
去重方法
方法一:使用 filter 和 indexOf
这种方法适用于较小规模的数组。具体思路如下:
- 创建一个空数组
result,用于存放去重后的结果。 - 遍历原始数组
arr,对于每个对象obj,判断obj在result中是否已经存在。如果不存在,则将obj添加到result。
下面是具体的代码实现:
function removeDuplicates(arr, prop) {
var result = [];
arr.forEach(function(obj) {
var index = result.findIndex(function(item) {
return item[prop] === obj[prop];
});
if (index === -1) {
result.push(obj);
}
});
return result;
}
var data = [
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' },
{ id: 1, name: 'John' },
{ id: 3, name: 'Jim' }
];
var uniqueData = removeDuplicates(data, 'id');
console.log(uniqueData);
上述代码中,我们使用了 Array.prototype.findIndex() 方法来判断对象在 result 中是否已存在。
方法二:使用对象字典
这种方法适用于较大规模的数组。具体思路如下:
- 创建一个空对象
dict,用于存放已存在的对象。 - 遍历原始数组
arr,对于每个对象obj,使用obj[prop]作为键,在dict中查找是否已存在,如果不存在,则将obj添加到dict中。
下面是具体的代码实现:
function removeDuplicates(arr, prop) {
var dict = {};
arr.forEach(function(obj) {
var key = obj[prop];
if (!dict[key]) {
dict[key] = obj;
}
});
return Object.values(dict);
}
var data = [
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' },
{ id: 1, name: 'John' },
{ id: 3, name: 'Jim' }
];
var uniqueData = removeDuplicates(data, 'id');
console.log(uniqueData);
上述代码中,我们使用了 Object.values() 方法来获取对象字典中的所有值。
总结
本文介绍了两种常见的方法来实现 JavaScript 二维对象数组的去重操作,分别是使用 filter 和 indexOf,以及使用对象字典。根据实际情况选择适合的方法可以提高代码的执行效率。希望本文能帮助你解决相关问题,欢迎拓展和优化这些方法。

评论 (0)