美文网首页
查找数组重复元素的方法以及数组去重

查找数组重复元素的方法以及数组去重

作者: AuraAura | 来源:发表于2021-09-03 10:28 被阅读0次
    function duplicates(arr) {
        var temp = arr.filter(function(item,i){
              return arr.indexOf(item)!== i;
         })
        return temp
    }
    //输入[1, 2, 4, 4, 3, 3, 1, 5, 3]
    //输出[1,3,3,4]
    

    该方法可以查询重复元素,但元素重复次数超过两次以上就会输出多个重复元素

    1、使用 reduce 和 includes

    function unique(array) {
      return array.reduce(function (pre, item) {
        return pre.includes(item) ? pre : pre.concat(item);
      }, []);//第二个参数为[ ]要设置初始值,不然会从index1开始遍历
    }
    var array = [1, 5, 2, 3, 4, 2, 3, 1, 3, 4];
    unique(array);
    

    2、使用 set 去重

    var array = [1, 5, 2, 3, 4, 2, 3, 1, 3, 4];
    var newArr = [...new Set(array)];
    console.log(newArr); //[1, 5, 2, 3, 4]
    

    3、使用map去重

    function unique (arr) {
        let map = new Map()
        let array = new Array()  // 数组用于返回结果
        for (let i = 0; i < arr.length; i++) {
            if (map.has(arr[i])) {  // 如果有该key值
                map.set(arr[i], true)
            } else {
                map.set(arr[i], false)   // 如果没有该key值
                array.push(arr[i])
            }
        }
        return array
    }
    var array = [1, 5, 2, 3, 4, 2, 3, 1, 3, 4];
    unique(array);
    

    补充关于reduce用法

    array.reduce(callback, [initialValue])
    array.reduce((previousValue, currentValue, index, array) => { }, [initialValue])
    

    其中 callback 函数有四个参数

    • previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))
    • currentValue (数组中当前被处理的元素)
    • index (当前元素在数组中的索引)
    • array (调用 reduce 的数组)
      initialValue 为可选参数,第一次调用 callback 函数时的初始值,注意 如果不设置 initialValue,reduceh 会从索引 index 1 的开始执行,如果设置初始值 从索引 0 开始
      未设置初始值index始终从1开始.png
      数组去重正确用法.png

    相关文章

      网友评论

          本文标题:查找数组重复元素的方法以及数组去重

          本文链接:https://www.haomeiwen.com/subject/vyqpcltx.html