jquery 去重
jQuery 数组去重方法
在 jQuery 或 JavaScript 中,数组去重可以通过多种方式实现。以下是几种常见的方法:
使用 $.unique() 函数(仅适用于 DOM 元素数组)
jQuery 提供了一个 $.unique() 函数,但它仅适用于 DOM 元素数组的去重,不适用于普通数组。
var arr = [1, 2, 2, 3, 4, 4, 5];
var uniqueArr = $.unique(arr); // 不适用于普通数组
使用 $.grep() 和 $.inArray()
通过 $.grep() 和 $.inArray() 方法可以实现数组去重。
var arr = [1, 2, 2, 3, 4, 4, 5];
var uniqueArr = $.grep(arr, function(item, index) {
return $.inArray(item, arr) === index;
});
console.log(uniqueArr); // [1, 2, 3, 4, 5]
使用 JavaScript 原生方法
现代 JavaScript 提供了更简洁的去重方法,可以结合 jQuery 使用。
方法 1:使用 Set 和展开运算符
var arr = [1, 2, 2, 3, 4, 4, 5];
var uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5]
方法 2:使用 filter 和 indexOf
var arr = [1, 2, 2, 3, 4, 4, 5];
var uniqueArr = arr.filter(function(item, index) {
return arr.indexOf(item) === index;
});
console.log(uniqueArr); // [1, 2, 3, 4, 5]
对象属性去重
如果需要根据对象的某个属性去重,可以使用以下方法:

var arr = [
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' },
{ id: 1, name: 'John' }
];
var uniqueArr = [];
var temp = {};
$.each(arr, function(index, item) {
if (!temp[item.id]) {
temp[item.id] = true;
uniqueArr.push(item);
}
});
console.log(uniqueArr); // [{ id: 1, name: 'John' }, { id: 2, name: 'Jane' }]
总结
- 对于普通数组,推荐使用 JavaScript 原生方法(如
Set或filter)。 - 对于 DOM 元素数组,可以使用
$.unique()。 - 对于对象数组,可以通过临时对象实现属性去重。






