方法一

利用 Set 中元素唯一的特性

  1. let a = [1, 2, 'a', '1', 2, 1, 'a']
  2. function uniq(arr) {
  3. return Array.from(new Set(arr))
  4. // 还可以写成 return [...new Set(arr)]
  5. }
  6. 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) ```