1.双层for循环去重
判断前一个元素和后一个元素是否相等,如果相等删掉后一个元素
function func(tempArr){
for(var i=0;i<tempArr.length;i++){
for(var j=i+1;j<tempArr.length;j++){
if(tempArr[i]==tempArr[j]){
tempArr.splice(j,1);
j--;
};
};
};
return tempArr;
};
var arr = [20,3,4,45,34,43,20,45,60];
console.log(func(arr)); //(7) [20, 3, 4, 45, 34, 43, 60]
2.先排序再去重
先排序,然后相邻两个元素比较,不相等就把前一个元素push到新数组当中
function func(tempArr){
tempArr.sort(function(a,b){//sort()方法会影响原数组的顺序
return a-b;
});
var newArr = [];
for(var i=0;i<tempArr.length;i++){
if(tempArr[i]!=tempArr[i+1]){
newArr.push(arr[i]);
};
};
return newArr;
};
var arr = [20,3,4,45,34,43,20,45,60];
console.log(func(arr)); //(7) [20, 3, 4, 45, 34, 43, 60]
3.利用下标去重
新建一个空数组,判断原数组中的数是第一次出现,那么就把这个数放到新数组里面
function func(tempArr){
var newArr = [];
for(var i=0;i<tempArr.length;i++){
if(newArr.indexOf(tempArr[i])==-1){//需注意:IE8以下不支持indexOf()方法
newArr.push(arr[i]);
//等价于下面两种写法
//newArr.splice(i,0,arr[i]);
//newArr.splice(newArr.length,0,arr[i]);
};
};
return tempArr;
};
var arr = [20,3,4,45,34,43,20,45,60];
console.log(func(arr)); //(7) [20, 3, 4, 45, 34, 43, 60]
4.利用includes去重
新建一个数组,判断新数组中是否包含待去重数组中的元素,不包含就把这个元素push进新数组当中
function func(tempArr){
var newArr = [];
for(var i=0;i<tempArr.length;i++){
if(!newArr.includes(tempArr[i])){
newArr.push(tempArr[i]);
};
};
return newArr;
};
var arr = [20,3,4,45,34,43,20,45,60];
console.log(func(arr)); //(7) [20, 3, 4, 45, 34, 43, 60]