js数组去重的三种常用方法
生活随笔
收集整理的這篇文章主要介紹了
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数组去重的三种常用方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《程序猿的呐喊》读书笔记(下)
- 下一篇: zbb20170606 oracle 查