1.双重for循环 与splice
数组的引用不会变化
var arr=[2,3,1,2,3,5,2,4,1,2,3,5,2,1,5,7,8];
// 数组的引用不发生改变
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
// if(arr[i]===arr[j]) arr.splice(j,1);//删除元素后长度变化
if(arr[i]===arr[j]){
arr.splice(j,1);
j--;
}
}
}
console.log(arr);
2.双重for循环 标记去重法
var arr=[2,3,1,2,3,5,2,4,1,2,3,5,2,1,5,7,8];
var arr1=[];
for(var i=0;i<arr.length;i++){
var bool=false;
for(var j=0;j<arr1.length;j++){
if(arr[i]===arr1[j]){
bool=true;
break;
}
}
if(!bool) arr1.push(arr[i]);
}
console.log(arr1);
3.forEach与indexOf结合使用
var arr=[2,3,1,2,3,5,2,4,1,2,3,5,2,1,5,7,8];
var arr1=[];
arr.forEach(function(item){
if(arr1.indexOf(item)<0) arr1.push(item);
})
console.log(arr1);
4.利用对象去重
效率最高
var arr=[2,3,1,2,3,5,2,4,1,2,3,5,2,1,5,7,8];
var obj={};
var arr1=[];
for(var i=0;i<arr.length;i++){
obj["_"+arr[i]]=arr[i];
}
for(var prop in obj){
arr1.push(obj[prop]);
}
console.log(arr1);