jquery数组去重
jQuery数组去重方法
在jQuery中实现数组去重可以通过多种方式实现,以下是几种常见的方法:
方法一:使用jQuery的$.unique()函数
var arr = [1, 2, 2, 3, 4, 4, 5];
var uniqueArr = $.unique(arr.sort()).sort();
注意:$.unique()函数原本设计用于处理DOM元素数组,对普通数组可能表现不稳定。建议先排序数组以获得更好效果。
方法二:使用原生JavaScript的filter方法

var arr = [1, 2, 2, 3, 4, 4, 5];
var uniqueArr = arr.filter(function(item, index, self) {
return self.indexOf(item) === index;
});
方法三:使用ES6的Set对象
var arr = [1, 2, 2, 3, 4, 4, 5];
var uniqueArr = [...new Set(arr)];
方法四:使用jQuery的$.grep()方法

var arr = [1, 2, 2, 3, 4, 4, 5];
var seen = {};
var uniqueArr = $.grep(arr, function(item) {
return seen.hasOwnProperty(item) ? false : (seen[item] = true);
});
方法五:使用jQuery的$.each()方法
var arr = [1, 2, 2, 3, 4, 4, 5];
var uniqueArr = [];
$.each(arr, function(i, item) {
if ($.inArray(item, uniqueArr) === -1) {
uniqueArr.push(item);
}
});
性能考虑:
- 对于小数组,任何方法都可以
- 对于大数组,Set方法性能最好
- 如果需要兼容旧浏览器,filter或$.grep方法更可靠
注意事项:
- 对象数组的去重需要特殊处理,可能需要自定义比较函数
- NaN值的处理需要额外注意,因为NaN不等于自身






