• 【拿下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]
    
  • 相关阅读:
    【JavaP6大纲】Java基础篇:为什么jdk8以后HashMap会使用红黑树优化?
    【JavaP6大纲】Java基础篇:HashMap加载因子为什么是0.75?
    【JavaP6大纲】Zookeeper篇:选举机制
    就是要幸福(1)严于律人
    天真的童年
    闲言碎语话心得垃圾工作
    镜花水月
    就是要幸福(3)言行自由
    五年
    爸爸我给你捂捂手
  • 原文地址:https://www.cnblogs.com/huiwenhua/p/13589837.html
Copyright © 2020-2023  润新知