zoukankan      html  css  js  c++  java
  • 【拿下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]
    
  • 相关阅读:
    对soc-audio体系snd_soc_machine和snd_soc_dai_link简单理解
    I2S
    alsa和oss声音系统比较
    break 和 continue
    phalcon查询:单条查询,多条查询,多表查询
    phalcon: 独立的映射,字段名名别名
    phpexcel: 数据导出
    php:Mcrypt响应慢的原因解决备注
    js:s上次预览,上传图片预览,图片上传预览
    yii2: 点击编辑后,左侧的连接(a.navtab)失效,变成在新窗口打开
  • 原文地址:https://www.cnblogs.com/huiwenhua/p/13589837.html
Copyright © 2011-2022 走看看