1. 使用计数排序思路,缺点是只支持字符串
let a1 = [1, 2, 2, 3, 3, 3]
const uniq1 = function (a) {
let map = {}
for (let i = 0; i < a.length; i++) {
let number = a[i]
if (number === undefined) {
continue
}
if (number in map) {
continue
}
map[number] = true
}
const result = []
for (let key in map) {
result.push(parseInt(key))
}
return result
}
2. 使用Set
const uniq2 = function (a) {
return Array.from(new Set(a))
}
const uniq3 = function (a) {
return [...new Set(a)]
}
3. 使用Map,缺点是兼容性差了点
const uniq4 = function (a) {
let map = new Map()
for (let i = 0; i < a.length; i++) {
let number = a[i]
if (number === undefined) {
continue
}
if (map.has(number)) {
continue
}
map.set(number, true)
}
return [...map.keys()]
}