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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js数组去重的三种常用方法

發布時間:2024/6/21 编程问答 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js数组去重的三种常用方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第一種是比較常規的方法

思路:

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

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

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

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', 'a', 'b', 'd', 'e', 'e', 1, 0] alert(arr.unique1());

第二種方法比上面的方法效率要高

?

思路:

1.先將原數組進行排序

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

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

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 = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0] alert(arr.unique2());

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

?

第三種方法(推薦使用)

思路:

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

2.創建一個空對象

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

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

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 = [112,112,34,'你好',112,112,34,'你好','str','str1']; alert(arr.unique3());

原文鏈接:http://www.jb51.net/article/46154.htm

轉載于:https://www.cnblogs.com/liuhongxia/p/6946275.html

總結

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

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