1. 利用hasOwnProperty 判断是否存在对象属性
function unique(array){
var obj = {};
return array.filter(function(item,index,array){
return obj.hasOwnProperty(typeof item+item) ? false : (obj[typeof item+item]=true)
})
}
var array = [1,2,1,20];
console.log(unique(array)) // 1 2 20
2 利用filter
function unique(array){
return array.filter(function(item,index,array){
//当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素
return array.indexOf(item,0) === index
})
}
var array = [1,2,3,1,2,3,4]
console.log(unique(array)) // 1 2 3 4
3 利用递归去重
function unique(arr){
var array = arr;
var len = array.length;
array.sort(function(a,b){
return a- b;
})
function loop(index){
if(index >= 1){
if(array[index] === array[index-1]){
array.splice(index,1);
}
loop(index-1);//递归loop,然后数组去重
}
}
loop(len-1);
return array;
}
var array = [1,2,4,1,2,4];
console.log(unique(array)) // 1 2 4
4. 利用Map数据结构去重
function unique(arr){
let map = new Map();
let array = new Array();//数组用于返回结果
for(let i = 0;i<arr.length;i++){
if(map.has(arr[i])){
//如果有该key值
map.set(arr[i],true);
}else{
map.set(arr[i],false);//如果没有该值
array.push(arr[i])
}
}
return array;
}
var arr = [1,4,7,1,4,7];
console.log(unique(arr)) // 1 4 7