方法一
利用 Set 中元素唯一的特性
let a = [1, 2, 'a', '1', 2, 1, 'a']
function uniq(arr) {
return Array.from(new Set(arr))
// 还可以写成 return [...new Set(arr)]
}
uniq(a)
方法二
遍历数组,将数组项的值作为 Map 的 key,若存在则跳过,最后返回 Map 的 key
- 不能用 WeakMap, 因为没有 keys 方法
- 普通对象的key只能是字符串或symbol, 不能存储其他类型 ```javascript let a = [1, 2, ‘a’, ‘1’, 2, 1, ‘a’]
function uniq(arr) { const map = new Map()
for(let item of arr) { if( map.get(item) ) { continue } map.set(item, true) } return […map.keys()] }
uniq(a) ```