多种数组去重方法

132 阅读1分钟

最简单 Set

const unique = arr => Array.from(new Set(arr)) // [...new Set(arr)]

借用 map

const unique = arr => {
  const m = new Map()
  return arr.filter(item => (m.has(item) ? false : m.set(item, true)))
}

indexOf or includes

const unique = arr => {
  const res = []
  arr.forEach(item => {
    if (res.indexOf(item) === -1) {
      // !res.includes(item)
      res.push(item)
    }
  })
  return res
}

filter

const unique = arr => arr.filter((item, index) => arr.indexOf(item) === index)

sort 后前后元素对比

const unique = arr => {
  arr.sort((a, b) => a - b)
  const res = [arr[0]]
  let index = 0
  for (let i = 1; i < arr.length; i++) {
    if (arr[index] !== arr[i]) {
      res.push(arr[i])
    }
    index = i
  }
  return res
}