数组去重的几种方式

一:遍历数组去重

1
2
3
4
5
6
7
8
9
10
11
12
function arrays(arr){
var list = [];
arr.forEach((item)=>{
if(!list[item]){
list.push(item)
}
})
return list
}
var a = [1,2,4,6,'erw','wee',1,2,3,4,4,4];
console.log(arrays(a))

二:对象键值对匹配去重

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function arrays(arr){
var obj = {},list = [],v,type;
arr.forEach((item,index)=>{
type = typeof item;
if(!obj[item]){
obj[item] = type;
list.push(item)
}else if(obj[item].indexOf(type) < 0){
obj[item].push(type);
list.push(item)
}
})
return list
}
var a = [1,2,4,6,'erw','wee',1,2,3,4,4,4];
console.log(arrays(a))

三:数组排序后判断相邻是否相等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function arrays(arr){
arr.sort();
let l = arr.length;
var array = [arr[0]];
for(let i = 1; i < l, i++){
if(arr[i] !== arr[i-1]){
array.push(arr[i])
}
}
return array;
}
var a = [1,2,4,6,'erw','wee',1,2,3,4,4,4];
console.log(arrays(a))

四:获取最右值放入新数组

1
2
3
4
5
6
7
8
9
10
11
12
function arrays(array){
var r = [];
for(var i = 0, l = array.length; i < l; i++) {
for(var j = i + 1; j < l; j++)
if (array[i] === array[j]) j = ++i;
r.push(array[i]);
}
return r;
}
var a = [1,2,4,6,'erw','wee',1,2,3,4,4,4];
console.log(arrays(a))