zoukankan      html  css  js  c++  java
  • 简洁快速的数组去重

    在园子看博文的时候看到有数组去重,闲来无事,想着也记录一下自己知道的几种方法。

    首先简单的数组循环

    var arr = [1,2,3,4,5,6,1,2,3,4,5,6];
    var result = [];
    function arrDistinct(arr){
        for(var i =0;i<arr.length;i++){
            if(result.indexOf(arr[i]) == -1){
                result.push(arr[i])
            }
        }
        return result;
    }
    

     这只是针对于小型的数组好一点,可是要是数组长度大一点呢,比如创建一个50万的数组长度,那么这个方法就没那么适用了,

    这时我们可以使用es6的方法

    //先创建两个50万长度的数组
    let arr1 = Array.from(new Array(500000),(num,index) =>{
        return index
    });
    
    let arr2 = Array.from(new Array(500000),(num,index) =>{
        return index
    });
    
    function arrDistinct(a,b){
        return Array.from(new Set([...a],[...b]))
    }
    

      new Set是ES6提供了新的数据结构。它类似于数组,但是成员的值都是唯一的,没有重复的值。

    Set本身是一个构造函数,用来生成Set数据结构。既然没有唯一的值,那么用来去重就在合适不过了。

     

    接下来就是第三种去重方法

    //先创建两个50万长度的数组
    let arr1 = Array.from(new Array(500000),(num,index) =>{
        return index
    });
    
    let arr2 = Array.from(new Array(500000),(num,index) =>{
        return index
    });
    
    function arrDistinct(a,b){
        let result = [];
        let obj = {};
        let nArr = a.concat(b);
        for(let i of nArr){
            if(!obj[i]){
                result.push(i);
                obj[i] = 1;
            }
        }
        return result
    }
    

      再来一种就是先将数组进行排序,然后在比较和前面是否相等进行去重

    let arr1 = Array.from(new Array(500000),(num,index) =>{
        return index
    });
    
    let arr2 = Array.from(new Array(500000),(num,index) =>{
        return index
    });
    
    function arrDistinct(a,b){
        let arr3 = a.concat(b);
        let result = [arr3[0]];
        arr3.sort(function(a,b){
         return a-b;
      }); for(let i =1 ;i<arr3.length;i++){ if( arr3[i] != arr3[i-1] ){ result.push(arr3[i]); } } return result; }

      

     

      

  • 相关阅读:
    SCAU 12新生赛 H 拥挤的华农校巴
    C#实现让CPU占用率曲线听你的指挥 可指定运行核心
    追MM与设计模式的有趣见解
    FTP操作类
    怎么知道页面被放大缩小了
    SerialPort同步和异步数据读取
    Java Web 应用程序转换为 ASP.NET
    ASP.NET中进行消息处理(MSMQ)
    解压缩文件类
    怎样成为优秀的软件模型设计者?
  • 原文地址:https://www.cnblogs.com/xzhan/p/9698198.html
Copyright © 2011-2022 走看看