阅读 186

数组去重的4种算法

存在一个数组[1, 3, 5, 7, 9, 1, 5, 9]

通过一定的算法,得到数组[1, 3, 5, 7, 9]

遍历数组

    let arr = [1, 3, 5, 7, 9, 1, 3, 5]

    function arrUnique(arr) {
      let result = []
      for (let k of arr) {
        if (!result.includes(k)) {
          result.push(k)
        }
      }
      return result
    }
    console.log( arrUnique(arr) )
复制代码

利用对象键值对

    let arr = [1, 3, 5, 7, 9, 1, 3, 5]

    function arrUnique(arr) {
      let result = []
      let obj = {}
      for (let i = 0; i < arr.length; i++) {
        let val = arr[i]
        if (!obj[val]) {
          obj[val] = true
          result.push(arr[i])
        }
      }
      return result
    }
    console.log(arrUnique(arr))
复制代码

先排序,再去重

    let arr = [1, 3, 5, 7, 9, 1, 3, 5]

    function arrUnique(arr) {
      let result = [arr[0]]
      arr.sort((a, b) => a - b)
      for (let i = 0; i < arr.length; i++) {
        if (arr[i] !== result[result.length - 1]) {
          result.push(arr[i])
        }
      }

      return result
    }
    console.log(arrUnique(arr))
复制代码

借助ES6的Set数据结构

    let arr = [1, 3, 5, 7, 9, 1, 3, 5]

    function arrUnique(arr) {
      return [...new Set(arr)]
    }
    console.log(arrUnique(arr))
复制代码
文章分类
前端
文章标签