数组去重

Create a new post

1
2
3
4
5
6
7
var arr = [1,3,54,67,87,34,54,33,23,54,23,2,2,1,5];

function unique1(arr){
return Array.from(new Set(arr));
}

console.log(unique1(arr));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var arr = [1,3,54,67,87,34,54,33,23,54,23,2,2,1,5];

function unique2(arr){
var len = arr.length;
var res = [];
for(var i = 0; i< len; i++ ){
for(var j = i+1; j < len ;j++){
if(arr[i] == arr[j]){
j = ++i;
}
}
res.push(arr[i]);
}
return res;
}

console.log(unique2(arr));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var arr = [1,3,54,67,87,34,54,33,23,54,23,2,2,1,5];

function unique3(arr){
var len = arr.length;
var obj = {};
var res = [];
for(var i = 0; i < len; i++){
if(!obj[arr[i]]){
obj[arr[i]] = 1;
res.push(arr[i]);
}
}
return res;
}

console.log(unique3(arr));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var arr = [1,3,54,67,87,34,54,33,23,54,23,2,2,1,5];

function unique4(arr){
var len = arr.length;
for(var i = 0; i < len; i++){
for(var j = i + 1; j < len ; j ++){
if(arr[i] == arr[j]){
arr.splice(j,1);
len -- ;
j--;
}
}
}
return arr;
}

console.log(unique4(arr));//占用内存高不推荐
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var arr = [1,3,54,67,87,34,54,33,23,54,23,2,2,1,5];

function unique5(arr){
var len = arr.length;
var res = [];
arr.forEach(function(v, i ,arr){
var bool = arr.indexOf(v,i+1); //从传入参数的下一个索引值开始寻找是否存在重复
if(bool === -1){
res.push(v);
}
})
return res;
}

console.log(unique5(arr));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var arr = [1,3,54,67,87,34,54,33,23,54,23,2,2,1,5];

function unique6(arr){
var len = arr.length;
arr.sort(function(a,b){ //对数组进行排序才能方便比较
return a - b;
})
function loop(index){
if(index >= 1){
if(arr[index] === arr[index-1]){
arr.splice(index,1);
}
loop(index - 1); //递归loop函数进行去重
}
}
loop(len-1);
return arr;
}

console.log(unique6(arr));