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]
