数组去重(8种方法)

33 阅读1分钟

1.Set方法

const uniqueArray1 = (arr) => {
  return Array.from(new Set(arr))
}

2.for循环

const uniqueArray2 = (arr) => {
  let len = arr.length
  for (let i = 0; i < len; ++i) {
    for (let j = i + 1; j < len; ++j) {
      if (arr[j] === arr[i]) {
        arr.splice(j, 1)
        --j
        --len
      }
    }
  }
}

3.indexOf

const uniqueArray3 = (arr) => {
  const newArr = []
  arr.forEach(item => {
    newArr.indexOf(item) === -1 && newArr.push(item)
  })
  return newArr
}

4.includes

const uniqueArray4 = (arr) => {
  const newArr = []
  arr.forEach(item => {
    !newArr.includes(item) && newArr.push(item)
  })
  return newArr
}

5.filter

const uniqueArray5 = (arr) => {
  return arr.filter((item, index) => arr.indexOf(item) === index)
}

6.reduce

const uniqueArray6 = (arr) => {
  return arr.reduce((pre, item) => {
    !pre.includes(item) && pre.push(item)
    return pre
  }, [])
}

7.Map

const uniqueArray7 = (arr) => {
  const map = new Map()
  const newArr = []
  arr.forEach(item => {
    if (!map.has(item)) {
      newArr.push(item)
      map.set(item, true)
    }
  })
  return newArr
}

8.Object

const uniqueArray8 = (arr) => {
  const obj = {}
  const newArr = []
  arr.forEach(item => {
    if (!obj[item]) {
      newArr.push(item)
      obj[item] = true
    }
  })
  return newArr
}

欢迎评论区补充~