加载中...
  • 数组去重的4种算法 loading

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

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

    遍历数组

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    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) )

    利用对象键值对

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    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))

    先排序,再去重

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    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数据结构

    1
    2
    3
    4
    5
    6
    let arr = [1, 3, 5, 7, 9, 1, 3, 5]

    function arrUnique(arr) {
    return [...new Set(arr)]
    }
    console.log(arrUnique(arr))

    1

    上一篇:
    学习 Vue 原理:响应式
    下一篇:
    三种类型检查方法:typeof、instanceof 和 Object.prototype.toString
    本文目录
    本文目录