zoukankan      html  css  js  c++  java
  • JS 清除字符串数组中,重复元素

      1         <script language="JavaScript">  
      2     <!--  
      3     var arrData=new Array();  
      4     for(var i=0; i<10000; i++)  
      5     {  
      6     arrData[arrData.length] = String.fromCharCode(Math.floor(Math.random()*26)+97);  
      7     }  
      8     //document.write(arrData+"<br/>");   
      9       
     10     //方法一,普通遍历  
     11     function myArray_Unique(myArray)  
     12     {  
     13     //var myArray=new Array("a","a","c","a","c","d","e","f","f","g","h","g","h","k");  
     14     var haha=myArray;  
     15     for(var i=0;i<myArray.length;i++)  
     16     {  
     17     for(var j=0;j<myArray.length;j++)  
     18     {  
     19     temp=myArray[i];  
     20     if((i+j+1)<myArray.length&&temp==myArray[i+j+1]) //如果当前元素与后一个元素相等  
     21     haha.splice(i+j+1,1); //然后就移除下一个元素   
     22     }  
     23     }  
     24     return haha;  
     25     }   
     26       
     27     //方法二  
     28     function getUnique(someArray)  
     29     {  
     30     tempArray=someArray.slice(0);//复制数组到临时数组  
     31     for(var i=0;i<tempArray.length;i++)  
     32     {  
     33     for(var j=i+1;j<tempArray.length;)  
     34     {  
     35     if(tempArray[j]==tempArray[i])  
     36     //后面的元素若和待比较的相同,则删除并计数;  
     37     //删除后,后面的元素会自动提前,所以指针j不移动  
     38     {  
     39     tempArray.splice(j,1);  
     40     }  
     41     else  
     42     {  
     43     j++;  
     44     }  
     45     //不同,则指针移动  
     46     }  
     47     }  
     48     return tempArray;  
     49     }   
     50       
     51     //方法三 正则表达式 -- 适用于字符型数组  
     52     function getUnique2(A)  
     53     {  
     54     var str = "x0f"+ A.join("x0f");  
     55     while(/(w+)[^1]*1/.test(str))  
     56     str = str.replace("x0f"+ RegExp.$1, "");  
     57     return str.substr(1).split("x0f");  
     58     }   
     59       
     60     //方法四 关联结构  
     61     Array.prototype.unique = array_unique;  
     62     function array_unique()  
     63     {  
     64     var o = new Object();  
     65     for (var i=0,j=0; i<this.length; i++)  
     66     {  
     67     if (typeof o[this[i]] == 'undefined')  
     68     {  
     69     o[this[i]] = j++;  
     70     }  
     71     }  
     72     this.length = 0;  
     73     for (var key in o)  
     74     {  
     75     this[o[key]] = key;  
     76     }  
     77     return this;  
     78     } 
     79 
     80     function unique(arr) {
     81     var result = [], hash = {};
     82     for (var i = 0, elem; (elem = arr[i]) != null; i++) {
     83         if (!hash[elem]) {
     84             result.push(elem);
     85             hash[elem] = true;
     86         }
     87     }
     88     return result;
     89    }  
     90       
     91     var d = new Date().getTime();  
     92     document.write(myArray_Unique(arrData));  
     93     d = new Date().getTime()-d;  
     94     document.write("<br/>2000元素 方法一算法计耗时 "+ d +" 毫秒!<br/><br/>"); //大约370ms~390ms左右   
     95       
     96     var d = new Date().getTime();  
     97     document.write(getUnique(arrData));  
     98     d = new Date().getTime()-d;  
     99     document.write("<br/>2000元素 方法二算法计耗时 "+ d +" 毫秒!<br/><br/>"); //大约360ms~380ms左右   
    100       
    101     var d = new Date().getTime();  
    102     document.write(getUnique2(arrData));  
    103     d = new Date().getTime()-d;  
    104     document.write("<br/>2000元素 正则表达式 方法三算法计耗时 "+ d +" 毫秒!<br/><br/>");//大约80ms左右   
    105       
    106     var d = new Date().getTime();  
    107     document.write(arrData.unique());  
    108     d = new Date().getTime()-d;  
    109     document.write("<br/>2000元素 关联结构 方法四算法计耗时 "+ d +" 毫秒!<br /><br />");//大约0ms~10ms左右   
    110 
    111     var d = new Date().getTime();  
    112     document.write(unique(arrData));  
    113     d = new Date().getTime()-d;  
    114     document.write("<br/>2000元素 hashtable 方法五算法计耗时 "+ d +" 毫秒!<br /><br />");//大约0ms~10ms左右   
    115       
    116     //-->  
    117     </script>   
    118 
    119  
            <script language="JavaScript">  
        <!--  
        var arrData=new Array();  
        for(var i=0; i<10000; i++)  
        {  
        arrData[arrData.length] = String.fromCharCode(Math.floor(Math.random()*26)+97);  
        }  
        //document.write(arrData+"<br/>");   
          
        //方法一,普通遍历  
        function myArray_Unique(myArray)  
        {  
        //var myArray=new Array("a","a","c","a","c","d","e","f","f","g","h","g","h","k");  
        var haha=myArray;  
        for(var i=0;i<myArray.length;i++)  
        {  
        for(var j=0;j<myArray.length;j++)  
        {  
        temp=myArray[i];  
        if((i+j+1)<myArray.length&&temp==myArray[i+j+1]) //如果当前元素与后一个元素相等  
        haha.splice(i+j+1,1); //然后就移除下一个元素   
        }  
        }  
        return haha;  
        }   
          
        //方法二  
        function getUnique(someArray)  
        {  
        tempArray=someArray.slice(0);//复制数组到临时数组  
        for(var i=0;i<tempArray.length;i++)  
        {  
        for(var j=i+1;j<tempArray.length;)  
        {  
        if(tempArray[j]==tempArray[i])  
        //后面的元素若和待比较的相同,则删除并计数;  
        //删除后,后面的元素会自动提前,所以指针j不移动  
        {  
        tempArray.splice(j,1);  
        }  
        else  
        {  
        j++;  
        }  
        //不同,则指针移动  
        }  
        }  
        return tempArray;  
        }   
          
        //方法三 正则表达式 -- 适用于字符型数组  
        function getUnique2(A)  
        {  
        var str = "x0f"+ A.join("x0f");  
        while(/(w+)[^1]*1/.test(str))  
        str = str.replace("x0f"+ RegExp.$1, "");  
        return str.substr(1).split("x0f");  
        }   
          
        //方法四 关联结构  
        Array.prototype.unique = array_unique;  
        function array_unique()  
        {  
        var o = new Object();  
        for (var i=0,j=0; i<this.length; i++)  
        {  
        if (typeof o[this[i]] == 'undefined')  
        {  
        o[this[i]] = j++;  
        }  
        }  
        this.length = 0;  
        for (var key in o)  
        {  
        this[o[key]] = key;  
        }  
        return this;  
        }

        function unique(arr) {
        var result = [], hash = {};
        for (var i = 0, elem; (elem = arr[i]) != null; i++) {
            if (!hash[elem]) {
                result.push(elem);
                hash[elem] = true;
            }
        }
        return result;
       }  
          
        var d = new Date().getTime();  
        document.write(myArray_Unique(arrData));  
        d = new Date().getTime()-d;  
        document.write("<br/>2000元素 方法一算法计耗时 "+ d +" 毫秒!<br/><br/>"); //大约370ms~390ms左右   
          
        var d = new Date().getTime();  
        document.write(getUnique(arrData));  
        d = new Date().getTime()-d;  
        document.write("<br/>2000元素 方法二算法计耗时 "+ d +" 毫秒!<br/><br/>"); //大约360ms~380ms左右   
          
        var d = new Date().getTime();  
        document.write(getUnique2(arrData));  
        d = new Date().getTime()-d;  
        document.write("<br/>2000元素 正则表达式 方法三算法计耗时 "+ d +" 毫秒!<br/><br/>");//大约80ms左右   
          
        var d = new Date().getTime();  
        document.write(arrData.unique());  
        d = new Date().getTime()-d;  
        document.write("<br/>2000元素 关联结构 方法四算法计耗时 "+ d +" 毫秒!<br /><br />");//大约0ms~10ms左右   

        var d = new Date().getTime();  
        document.write(unique(arrData));  
        d = new Date().getTime()-d;  
        document.write("<br/>2000元素 hashtable 方法五算法计耗时 "+ d +" 毫秒!<br /><br />");//大约0ms~10ms左右   
          
        //-->  
        </script>  
  • 相关阅读:
    Laravel自定义分页样式
    mysql中 key 、primary key 、unique key 和 index 有什么不同
    PHP RSA公私钥的理解和示例说明
    PHP操作Excel – PHPExcel 基本用法
    Yii 1.1 常规框架部署和配置
    阿里云服务器 Ubuntu 安装 LNMP
    全国地区sql表
    十道海量数据处理面试题与十个方法大总结
    Hibernate中对象的三种状态以及Session类中saveOrUpdate方法与merge方法的区别
    乐观锁与悲观锁——解决并发问题
  • 原文地址:https://www.cnblogs.com/interdrp/p/5879071.html
Copyright © 2011-2022 走看看