1. 非Set方法实现:
let array = [1,5,2,3,4,2,3,1,3,4];
function unique(array){
let array2 = [];
array.forEach((item)=>{
if(array2.indexOf(item) === -1){
array2.push(item);
}
})
return array2;
}
console.log(unique(array));//[1, 5, 2, 3, 4]
2. Set 方法实现
let array = [1,5,2,3,4,2,3,1,3,4];
function unique(array){
return [...new Set(array)];
}
console.log(unique(array));//[1, 5, 2, 3, 4]
3. Map 方法实现
map 的实现方式是 hash 哈希,哈希除了用 map,有的也会用对象代替,但是用对象会存在问题,因为对象的key值只能是字符串,因此比较数字1和字符串1的时候会有问题。因此最好的方式是用 Map,因为 Map 的key 支持任意值,但是会存在兼容性问题。
Map方法不仅可以去重,还可以找到第一个重复的值或者重复的值有哪些
let array = [1,5,2,3,4,2,3,1,3,4];
function unique(array){
let hashMap = new Map();
let array2 = [];
array.forEach((item)=>{
if(hashMap.has(item)){
hashMap.set(item,true);
}
else{
hashMap.set(item,false);
array2.push(item);
}
})
return array2;
}
console.log(unique(array));//[1, 5, 2, 3, 4]