• 【拿下JS算法】:数组去重


    本篇将介绍常见的三种数组去重方法(小技能三种以上)。
    欢迎大家在评论区提供更优方法,不足之处望海涵!

    一、数组遍历,借助临时数组存储

    • 技能点
      • includes方法判断数组是否包含某一指定的值,包含返回true,否则返回false。
    • demo
    function unique(arr) {
        const newArr = []
        for (let i = 0, len = arr.length; i < len; i++) {
            // 这个地方可以使用indexOf()替代,远离是一样的
            if (!newArr.includes(arr[i])) {
                console.log(arr[i])
                newArr.push(arr[i])
            }
        }
        return newArr
    }
    
    const arr = [1, 2, 3, 2, 5, 6, 5]
    const newArr = unique(arr)
    console.log(newArr) // [1, 2, 3, 5, 6]
    

    二、ES6 Set

    • 技能点
      • Set为ES6新增对象,它是值的集合,你可以按照插入的顺序迭代它的元素。 Set中的元素只会出现一次,即 Set 中的元素是唯一的。
      • Array.from方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。
    • demo
    function unique(arr) {
        // 这个地方也可以使用ES6 扩展语法进行返回
        // return [...new Set(arr)]
        return Array.from(new Set(arr))
    }
    
    const arr = [1, 2, 3, 2, 5, 6, 5]
    const newArr = unique(arr)
    console.log(newArr) // [1, 2, 3, 5, 6]
    

    三、splice删除

    • 技能点
      splice方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。关于数组方法学习,也可以移步到Javascript对象之【Array】进行交流学习。
    • demo
    function unique(arr) {
        for (let i = 1; i < arr.length; i++) {
            for (let j = i + 1; j < arr.length; j ++ ) {
                if (arr[i] == arr[j]) {
                    arr.splice(j, 1)
                }
            }
        }
        return arr
    }
    
    const arr = [1, 2, 3, 2, 5, 6, 5]
    const newArr = unique(arr)
    console.log(newArr) // [1, 2, 3, 5, 6]
    
  • 相关阅读:
    斐波纳契数列
    实现刮刮乐的效果
    简易版美图秀秀
    js 宏任务和微任务
    作业3 阅读
    作业2 结对子作业
    做汉堡
    练习一
    Java设计模式十八:代理模式(Proxy)
    Java设计模式二十:适配器模式(Adapter)
  • 原文地址:https://www.cnblogs.com/huiwenhua/p/13589837.html
Copyright © 2020-2023  润新知