日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

使用JavaStcript对数组元素去重的方法

發布時間:2024/4/14 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用JavaStcript对数组元素去重的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  在做javascript開發的時候,經常會遇到數組元素重復的問題,而javascript Array又沒有直接提供方法解決此問題,還需要自己去實現。

方案一:

思路:

1.構建一個新的數組存放結果;

2.for循環中每次從原數組中取出一個元素,用這個元素循環與結果數組對比;

3.若結果數組中沒有該元素,則存到結果數組中。

代碼如下:

<script>Array.prototype.unique1=function(){var res=[this[0]];for(var i=1;i<this.length;i++){var repeat=false;for(var j=0;j<res.length;j++){if(this[i]==res[j]){repeat=true;break;}}if(!repeat){res.push(this[i]);}}return res;}var arr=[1,'a','b','c','c','b',2,2,2,3,4,2]alert(arr.unique1());</script>

結果如下:

?

方案二:

(比方案一效率要高)

思路:

1.先將原數組進行排序

2.檢查原數組中的第i個元素 與 結果數組中的最后一個元素是否相同,因為已經排序,所以重復元素會在相鄰位置

3.如果不相同,則將該元素存入結果數組中

代碼如下:

<script>Array.prototype.unique2=function() {this.sort(); //先排序var res=[this[0]];for(var i= 1;i<this.length;i++){if(this[i]!==res[res.length-1]){res.push(this[i]);}}return res;}var arr=[2,'h','e','e','e','l','o',2,2,3,4,2]alert(arr.unique2());</script>

結果如下:

第二種方法也會有一定的局限性,因為在去重前進行了排序,所以最后返回的去重結果也是排序后的。如果要求不改變數組的順序去重,那這種方法便不可取了。

?

方案三(推薦的方案)

思路:

1.創建一個新的數組存放結果

2.創建一個空對象

3.for循環時,每次取出一個元素與對象進行對比,如果這個元素不重復,則把它存放到結果數組中,同時把這個元素的內容作為對象的一個屬性,并賦值為1,存入到第2步建立的對象中。

說明:至于如何對比,就是每次從原數組中取出一個元素,然后到對象中去訪問這個屬性,如果能訪問到值,則說明重復。

代碼如下:

<script>Array.prototype.unique3=function() {var res=[];var json={};for(var i=0;i<this.length;i++){if(!json[this[i]]){res.push(this[i]);json[this[i]]=1;}}return res;}var arr=[3,'沈','你好','沈','你好','hello','hello',5,5,3,4,4]alert(arr.unique3());</script>

結果如下:

?

?

?

?

?

參考:http://www.jb51.net/article/46154.htm

總結

以上是生活随笔為你收集整理的使用JavaStcript对数组元素去重的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。