本文主要说明两种原型方法来过滤数组中的重复元素。
方法一:
思路:1)构建一个新的数组存放结果;
2)for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比;
3)若结果数组中没有该元素,则存到结果数组中。
代码实现:
Array.prototype.unique1 = function(){方法二:
var res = [this[0]];
for(var i = 1; i < this.length; i++){
var repeat = false;
for(var j = 0; j < res.length; j++){
if(this[i] == res[j]){
repeat= true;
break;
}
}
if(!repeat){
res.push(this[i]);
}
}
return res;
}
var arrNum2 = [1,4,1,1,3,3,4,6,7,8,3,7,0,2,11,2,2,22,11,22];
console.log(arrNum2.unique1());
思路:1)构建一个临时数组存放结果;
2)循环遍历当前数组,判断当前数组下标为i的元素是否已经保存在临时数组,如果已保存,则跳过,否则将此元素保存到临时数组中。
代码实现:
Array.prototype.method1 = function(){
var arr=[]; //定义一个临时数组
for(var i = 0; i < this.length; i++){ //循环遍历当前数组
//判断当前数组下标为i的元素是否已经保存到临时数组
//如果已保存,则跳过,否则将此元素保存到临时数组中
if(arr.indexOf(this[i]) == -1){
arr.push(this[i]);
}
}
return arr;
};
var arrNum1 = [1,4,1,1,3,3,4,6,7,8,3,7,0,2,11,2,2,22,11,22];
console.log(arrNum1.method1());
两种方法的结果: