JavaScript去除相同Array数组元素

  1. <style>  
  2. body, div , a {  
  3. color: #666666;  
  4. font-family: tahoma, verdana, ‘courier new’, sans-serif;  
  5. font-size: 12px !important;  
  6. font-size: 11px;  
  7. line-height: 18px;  
  8. background: white;  
  9. text-align: center;  
  10. }  
  11. a {  
  12. color: #2C78C5;  
  13. text-decoration:none;  
  14. }  
  15. a:hover {  
  16. /*color: red; 
  17. text-decoration:underline;*/  
  18. border-bottom: 1px dotted #ff0000;  
  19. text-decoration: none;  
  20. }  
  21. </style>  
  22. <style>  
  23. fieldset {  
  24. padding-right: 8px;  
  25. padding-left: 8px;  
  26. padding-top: 8px;  
  27. padding-bottom: 8px;  
  28. width: 78%;  
  29. }  
  30. legend {  
  31. margin-bottom: 0px;  
  32. font-size: 9pt;  
  33. }  
  34. #divheader {  
  35. width:100%;  
  36. text-align:right;  
  37. margin-top:0px;  
  38. padding-bottom:8px;  
  39. border-bottom:1px #cccccc solid;  
  40. }  
  41. #divfooter {  
  42. width:100%;  
  43. text-align:right;  
  44. margin-top:15px;  
  45. padding-top:8px;  
  46. border-top:1px #cccccc solid;  
  47. }  
  48. #divOut {  
  49. text-align:left;  
  50. /*float: left;*/  
  51. }  
  52. </style>  
  53. <fieldset>  
  54. <legend><b><a>菜单</a></b></legend>  
  55. <div id=“divheader”><b><a>专注Web技术 体验开发乐趣 — Redhat</a></b></div>  
  56. <div id=“divOut”>  
  57. <script language=“JavaScript”>  
  58. <!–  
  59. var arrData=new Array();  
  60. for(var i=0; i<1000; i++)  
  61. {  
  62.     arrData[arrData.length] = String.fromCharCode(Math.floor(Math.random()*26)+97);  
  63. }  
  64. //document.write(arrData+”<br/>”);  
  65. //方法一,普通遍历  
  66. function myArray_Unique(myArray)  
  67. {  
  68.     //var myArray=new Array(“a”,”a”,”c”,”a”,”c”,”d”,”e”,”f”,”f”,”g”,”h”,”g”,”h”,”k”);  
  69.     var haha=myArray;  
  70.     for(var i=0;i<myArray.length;i++)  
  71.     {  
  72.         for(var j=0;j<myArray.length;j++)  
  73.         {  
  74.             temp=myArray[i];  
  75.             if((i+j+1)<myArray.length&&temp==myArray[i+j+1]) //如果当前元素与后一个元素相等  
  76.             haha.splice(i+j+1,1);       //然后就移除下一个元素  
  77.         }  
  78.     }  
  79.     return haha;  
  80. }  
  81. //方法二  
  82. function getUnique(someArray)  
  83. {  
  84.     tempArray=someArray.slice(0);//复制数组到临时数组  
  85.     for(var i=0;i<tempArray.length;i++)  
  86.     {  
  87.         for(var j=i+1;j<tempArray.length;)  
  88.         {  
  89.             if(tempArray[j]==tempArray[i])  
  90.             //后面的元素若和待比较的相同,则删除并计数;  
  91.             //删除后,后面的元素会自动提前,所以指针j不移动  
  92.             {  
  93.                 tempArray.splice(j,1);  
  94.             }  
  95.             else  
  96.             {  
  97.                 j++;  
  98.             }  
  99.             //不同,则指针移动  
  100.         }  
  101.     }  
  102.     return tempArray;  
  103. }  
  104. //方法三 正则表达式 — 适用于字符型数组  
  105. function getUnique2(A)  
  106. {  
  107.     var str = “\x0f”+ A.join(“\x0f”);  
  108.     while(/(\w+)[^\1]*\1/.test(str))  
  109.     str = str.replace(“\x0f”+ RegExp.$1, “”);  
  110.     return str.substr(1).split(“\x0f”);  
  111. }  
  112. //方法四 关联结构  
  113. Array.prototype.unique = array_unique;  
  114. function array_unique()  
  115. {  
  116.     var o = new Object();  
  117.     for (var i=0,j=0; i<this.length; i++)  
  118.     {  
  119.         if (typeof o[this[i]] == ‘undefined’)  
  120.         {  
  121.             o[this[i]] = j++;  
  122.         }  
  123.     }  
  124.     this.length = 0;  
  125.     for (var key in o)  
  126.     {  
  127.         this[o[key]] = key;  
  128.     }  
  129.     return this;  
  130. }  
  131.   
  132. var d = new Date().getTime();  
  133. document.write(myArray_Unique(arrData));  
  134. d = new Date().getTime()-d;  
  135. document.write(“<br/>2000元素 方法一算法计耗时 “+ d +” 毫秒!<br/><br/>”);   //大约370ms~390ms左右  
  136. var d = new Date().getTime();  
  137. document.write(getUnique(arrData));  
  138. d = new Date().getTime()-d;  
  139. document.write(“<br/>2000元素 方法二算法计耗时 “+ d +” 毫秒!<br/><br/>”);   //大约360ms~380ms左右  
  140. var d = new Date().getTime();  
  141. document.write(getUnique2(arrData));  
  142. d = new Date().getTime()-d;  
  143. document.write(“<br/>2000元素 正则表达式 方法三算法计耗时 “+ d +” 毫秒!<br/><br/>”);//大约80ms左右  
  144. var d = new Date().getTime();  
  145. document.write(arrData.unique());  
  146. d = new Date().getTime()-d;  
  147. document.write(“<br/>2000元素 关联结构 方法四算法计耗时 “+ d +” 毫秒!<br /><br />”);//大约0ms~10ms左右  
  148. //–>  
  149. </script>