数组去重
删除数组中的重复项;
方法一:注意indexOf的兼容
var arr=[1,1,2,2,44,55,3,3];
var arr1=[];
for(var i=0;i<arr.length;i++){
if(arr1.indexOf(arr[i]) === -1){
arr1.push(arr[i]);
}
}
console.log(arr); //Array [ 1, 1, 2, 2, 44, 55, 3, 3 ]
console.log(arr1); //Array [ 1, 2, 44, 55, 3 ]
方法二:修改原数组
var arr=[1,1,2,2,44,55,3,3];
var obj={};
for(var i=0;i<arr.length;i++){
var current=arr[i];
if(obj[current]){
arr.splice(i,1); //删除掉重复的元素,注意数组塌陷啊!
i--; //避免数组塌陷,阻止数组跳过去
continue;
}
obj[current]=current;
}
console.log(arr); //Array [ 1, 2, 44, 55, 3 ]
方法二优化:
var arr=[1,1,2,2,44,55,3,3];
var obj={};
for(var i=0;i<arr.length;i++){
var current=arr[i];
if(obj[current]){
arr[i]=arr[arr.length-1]; //把最后一项挪到准备删除的那一项
arr.length--; //把最后一项删除掉
i--; //避免数组塌陷,阻止数组跳过去
continue;
}
obj[current]=current;
}
console.log(arr);