1. Array.filter
// 看上去简单,实际很费时.
function unique(arr){
return arr.filter((v,i,arr)=>arr.indexOf(v)===i);
}
2. 利用集合元素不重复的方式去重
// 效率相比Array.filter快了不少,但还不是最快.
function unique_set(arr){
return Array.from(new Set(arr));
}
3. 遍历去重
// 原理与第一种方法类似,效率一样,慢!
function unique_item(arr){
let newArr = [];
let len = arr.length;
for(let i=0;i<len;i++){
if(arr.indexOf(arr[i])===i){
newArr.push(arr[i]);
}
}
return newArr;
}
4. 利用对象的key唯一去重
// 效率最高,速度最快!!!
function unique_obj(arr){
let newArr = {};
let newarr = []
let len = arr.length;
for(let i=0;i<len;i++){
if(newArr[arr[i]] !== 1){
newArr[arr[i]]=1;
newarr.push(arr[i]);
}
}
return newArr;
}