方法一:计数排序的思维
let uniq = (a)=>{
let map = {}
for (let i = 0; i < a.length; i++) {
let number = a[i]
if(number === undefined || number in map){
continue
}
map[number] = true
}
return Object.keys(map)
}
缺点:
1.返回的数组元素是字符串的
2.假设数组中有一个字符串1和一个数字1,那么去重后之后剩下一个字符串1
方法二:用Map
let uniq = (a)=>{
let map = new Map()
for (let i = 0; i < a.length; i++) {
let number = a[i]
if(number === undefined || map.has(number)){
continue
}
map.set(number,true)
}
return [...map.keys()]
}
缺点: 不兼容一些老版本的浏览器
方法三:用Set(如果是面试,一般就不允许你用这个方法)
let uniq = (a)=>{
return Array.from(new Set(a))
}