四种方法实现数组去重

2021-04-15  本文已影响0人  Marshall3572

数组去重一般来说就这么几种方法,理解代码,记住就好!Map、Set、reduce、filter~
map实现

const arr = [3, 1, 1, 2, 5, 9, 3, 0]
const deduplication1 = arr => {
  let map = new Map()
  arr.forEach(v => map.set(v, 1))
  return [...map.keys()]
};
console.log(deduplication1(arr));

set实现

const arr = [3, 1, 1, 2, 5, 9, 3, 0]
const deduplication1 = arr => {
  let map = new Map()
  arr.forEach(v => map.set(v, 1))
  return [...map.keys()]
};
console.log(deduplication1(arr));

reduce实现(⭐)

const arr = [3, 1, 1, 2, 5, 9, 3, 0]
const deduplication3 = arr => arr.reduce((temp, v) => temp.includes(v) ? temp : [...temp, v], [])
console.log(deduplication3(arr))

filter过滤实现

const arr = [3, 1, 1, 2, 5, 9, 3, 0]
const deduplication4 = arr => arr.filter((val, index) => arr.indexOf(val) === index)
console.log(deduplication4(arr))

上边四种方法都是创建了新的数组来去重,下边这种方法实现了在原数组上去重。

let arr = [3, 0, 0, 1, 1, 2, 3, 3, 3, 5, 5]

function deduplication(arr) {
  let hash = {}
  for(let i=0; i<arr.length; i++) {
    if(!hash[arr[i]]) {
      hash[arr[i]] = 1
    } else {
      arr.splice(i, 1)
      i--
    }
  }
  return arr
}

let arr2 = deduplication(arr)
console.log(arr2)
console.log(arr)
console.log(arr === arr2)
上一篇 下一篇

猜你喜欢

热点阅读