javascript数组去重
利用数组的Array.prototype.indexOf
来为数组对象扩展一个快速去重的方法。直接上代码:
if(!Array.prototype.unique){
Array.prototype.unique = function() {
var a = [];//定义一个临时数组
for (var i = 0; i < this.length; i++) {
//如果临时数组中没有这个元素,则将当前元素插入
if(a.indexOf(this[i]) === -1)a.push(this[i]);
}
}
return a;//最后返回临时数组
}
测试:
var arr = [8,8,8,8,8,8,9,0,1,5,6,7,8,1,4,3,2,4];
console.log(arr.unique());
//结果-> [8, 9, 0, 1, 5, 6, 7, 4, 3, 2]
兼容IE8及以下:
IE8不支持Array.prototype.indexOf
,为了使unique去重方法有最大程度的兼容性,再加上下面的代码:
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(val) {
for (var i = 0; i < this.length; i++) {
if (this[i] === val)return i;
//-> 遍历数组,如果存在则返回对应索引
}
return -1;//如果不存在,则返回-1
}
}
总结:
最终的代码如下:
/**
* @author: coco tsau
* @date: 2016-06-29
* @support: IE6+, Firefox ,Chrome
*/
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(val) {
for (var i = 0; i < this.length; i++) {
if (this[i] === val)return i;
}
return -1;
}
}
if (!Array.prototype.unique) {
Array.prototype.unique = function() {
var a = [];
for (var i = 0; i < this.length; i++) {
if (a.indexOf(this[i]) === -1) {
a.push(this[i]);
}
}
return a;
}
}