• 数组去重


    1.最基本的去重方法

    思路:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。

    function unique(arr){

      var res = [arr[0]];

      for(var i=1;i<arr.length;i++){

        var repeat = false;

        for(var j=0;j<res.length;j++){

          if(arr[i] == res[j]){

            repeat = true;

            break;

          }

        }

        if(!repeat){

          res.push(arr[i]);

        }

      }

      return res;

    }

    2.先排序在去重

    思路:先将原数组排序,在与相邻的进行比较,如果不同则存入新数组

    function unique(arr){

      var arr2 = arr.sort();

      var res = [arr2[0]];

      for(var i=1;i<arr2.length;i++){

        if(arr2[i] !== res[res.length-1]){

          res.push(arr2[i]);

        }

      }

      return res;

    }

    3.利用对象的属性去重(推荐)

    思路:每次取出原数组的元素,然后再对象中访问这个属性,如果存在就说明重复

    function unique(arr){

      var res =[];

      var json = {};

      for(var i=0;i<arr.length;i++){

        if(!json[arr[i]]){

          res.push(arr[i]);

          json[arr[i]] = 1;

        }

      }

      return res;

    }

    4.利用下标查询

      function unique(arr){
         var newArr = [arr[0]];
         for(var i=1;i<arr.length;i++){
        if(newArr.indexOf(arr[i]) == -1){
                 newArr.push(arr[i]);
            }
            }
            return newArr;
       }

    5.利用ES6的set

    Set数据结构,它类似于数组,其成员的值都是唯一的。

    利用Array.from将Set结构转换成数组

    1
    2
    3
    4
    function dedupe(array){
     return Array.from(new Set(array));
    }
    dedupe([1,1,2,3]) //[1,2,3]

    拓展运算符(...)内部使用for...of循环

    1
    2
    3
    let arr = [1,2,3,3];
    let resultarr = [...new Set(arr)];
    console.log(resultarr); //[1,2,3]
  • 相关阅读:
    天使投资人如何评估创业公司价值
    采用UltraISO制作U盘启动盘
    不动产登记证书曝光 一个“改变”必须注意(图)
    VS2005工程的Device右边内容为空问题
    WIN7电脑文件莫名其妙被删除后的恢复
    关机充电如何实现短按pwrkey灭屏
    uboot环境变量实现分析
    WinCE上BINFS实现详解
    S3c2440A WINCE平台HIVE注册表+binfs的实现
    在SD/MMC卡上实现hive (Implement WinCE HIVE&ROM system on NAND or SD system )
  • 原文地址:https://www.cnblogs.com/luckyXcc/p/9147896.html
Copyright © 2020-2023  润新知