数组去重

  1. 思路一,对象的属性的第二种写法 obj.[arr[i]]
1
2
3
4
5
6
7
8
9
10
11
将数组的value作为一个新的空对象hsah的属性,将其赋值为true,并将value push至空数组result中:
function unique(arr){
var result =[],hash = {};
for (var i = 0,len = arr.length; i<len; i++){
if(!hash[arr[i]]){
hash[arr[i]] = true;
result.push(arr[i])
}
}
return result;
}
  1. 思路二:indexOf方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 function unique(arr){
var result = [];
for(var i=0; i<arr.length; i++){
if(arr.indexOf(arr[i]) == i){
result.push(arr[i]);
}
}
return result;
}


function unique(arr){
return arr.filter(function (item, index, self) {
return self.indexOf(item) === index;
});
}
  1. ES6–你值得拥有
1
2
3
4
5
6
7
8
function unique (arr) {
return Array.from(new Set(arr))
}

function unique (arr) {
const seen = new Map()
return arr.filter((a) => !seen.has(a) && seen.set(a, 1))
}