zoukankan      html  css  js  c++  java
  • Javascript中数组查重的方法总结大全

    数组查重:简单点说,就是找出数组中重复的元素然后去除,最后得到一个没有重复元素的数组。

    // 方法一思路:
        1.构建一个新的数组,用于存放结果。  
        2.for循环中每次从数组取出一个元素,用这个元素与结果数组的中的每个元素相比。  

        3.若结果数组中没有和取出的元素相同,则存放在结果数组中。

    [javascript] view plain copy
    1. //自定义函数  
    2. var ret= function(arr){  
    3.     var res=[arr[0]];  
    4.     for(var j=1;j<arr.length;j++){  
    5.         var repeat= false;  
    6.         for(var i=0;i<res.length;i++){  
    7.            if(arr[j]==res[i]){  
    8.                repeat=true;  
    9.                break;  
    10.            }  
    11.         }  
    12.         if(!repeat){  
    13.            res.push(arr[j]);  
    14.         }  
    15.     }  
    16.     return res;  
    17. };  
    18. var a=[1,3,4,3,5,'aa','bb','aa'];  
    19. document.write(ret(a));  //1,3,4,5,aa,bb  
    20.   
    21. //或者给数组添加方法  
    22. Array.prototype.ret= function(){  
    23.     var res=[this[0]];  
    24.     for(var j=1;j<this.length;j++){  
    25.         var repeat= false;  
    26.         for(var i=0;i<res.length;i++){  
    27.            if(this[j]==res[i]){  
    28.                repeat=true;  
    29.                break;  
    30.            }  
    31.         }  
    32.         if(!repeat){  
    33.            res.push(this[j]);  
    34.         }  
    35.     }  
    36.     return res;  
    37. }  
    38. var a=[1,3,4,3,5,'aa','bb','aa'];  
    39. document.write(a.ret());  //1,3,4,5,aa,bb  


    //方法二思路:(有点:查重效率高;缺点:由于查重之前对数组进行了排序,还回结果也是排序的,如果不改变原数组的顺序去重,那这种方法便不可取了。)
        1.首先给原数组进行排序。
        2.检查原数组的第i个元素与结果数组的最后一个元素是否相等。因为已经排序,所以重复元素会在相邻位置。
        3.如果不相同,则将该元素存入结果数组中。

    [javascript] view plain copy
    1. //自定义函数  
    2. var ret1= function(arr){  
    3.     arr.sort();  
    4.     var res= [arr[0]];  
    5.     for(var i=1;i<arr.length;i++){  
    6.        if(arr[i]!=res[res.length-1]){  
    7.          res.push(arr[i]);  
    8.        }  
    9.     }  
    10.     return res;     
    11. }  
    12. var b= [1,3,4,2,3,4];  
    13. document.write(ret1(b));  //1,2,3,4  
    14.   
    15. //或者给数组添加方法  
    16. Array.prototype.ret1= function(){  
    17.     this.sort();  
    18.     var res= [this[0]];  
    19.     for(var i=1;i<this.length;i++){  
    20.        if(arr[i]!=res[res.length-1]){  
    21.          res.push(this[i]);  
    22.        }  
    23.     }  
    24.     return res;     
    25. }  
    26. var b= [1,3,4,2,3,4];  
    27. document.write(b.ret1());  //1,2,3,4  
    28.    

    /方法三思路:(推荐使用这个方法)
        1.定义一个结果数组存放结果。
        2.创建一个新对象。
        3.for循环的时候,每次取出一个元素与对象对比,如果这个元素不重复则把它放在结果数组里,同时把这个元素的内容作为对象的属性,并赋值为1。
    说明:至于如何对比取出的元素与对象,就是每次从原数组取出一个元素,然后到对象中访问这个属性,如果访问到值,则说明重复。

    [javascript] view plain copy
      1. //自定义函数  
      2. var ret2= function(arr){  
      3.     var res=[];  
      4.     var json={};  
      5.     for(var i=0;i<arr.length;i++){  
      6.        if(!json[arr[i]]){  
      7.           res.push(arr[i]);  
      8.           json[arr[i]]=1;  
      9.        }  
      10.     }  
      11.     return res;  
      12. }  
      13. var c=[1,2,3,2,1];  
      14. document.write(ret2(c)); //1,2,3  
      15.   
      16. //或者给数组添加方法  
      17. Array.prototype.ret2= function(){  
      18.     var res=[];  
      19.     var json={};  
      20.     for(var i=0;i<this.length;i++){  
      21.        if(!json[this[i]]){  
      22.           res.push(this[i]);  
      23.           json[this[i]]=1;  
      24.        }  
      25.     }  
      26.     return res;  
      27. }  
      28. var c=[1,2,3,2,1];  
      29. document.write(c.ret2()); //1,2,3 
  • 相关阅读:
    生成器,生成器表达式。
    device busy
    memcached
    ps f
    Eviews9.0---软件安装
    免费提取百度文库 doc 文件
    Matlab---length函数
    Matlab 路径函数
    matlab中disp函数的简单用法
    MATLAB---dir函数
  • 原文地址:https://www.cnblogs.com/ljk001/p/8000239.html
Copyright © 2011-2022 走看看