三種常用的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.1008a.com/post/277.html
相關文章
- js陣列去重的三種常用方法總結JS陣列
- JS陣列去重的幾種方法JS陣列
- JS陣列去重的10種方法JS陣列
- JS陣列去重7種方法JS陣列
- 整理了js陣列去重4種方法JS陣列
- 陣列去重的六種方法陣列
- 陣列去重的幾種方法陣列
- JS陣列去重 – JSON陣列去重陣列JSON
- JS實現陣列去重方法總結(六種方法)JS陣列
- 親測有效JS中9種陣列去重方法JS陣列
- js陣列去重JS陣列
- 7種方法實現陣列去重陣列
- 陣列去重的方法陣列
- JavaScript陣列去重(12種方法,史上最全)JavaScript陣列
- js物件陣列去重JS物件陣列
- js陣列物件去重JS陣列物件
- 陣列去重的幾種方式陣列
- JavaScript陣列去重方法JavaScript陣列
- 【JS】JS陣列新增元素的三種方法JS陣列
- JavaScript&ES6----陣列去重的四種方法JavaScript陣列
- JS陣列去重的實現JS陣列
- JS實現陣列去重JS陣列
- js 陣列去重小技巧JS陣列
- 陣列去重的幾個方法陣列
- 陣列去重方法總結陣列
- js常用的陣列方法JS陣列
- JS陣列隨機排序的三種方法JS陣列隨機排序
- js常用陣列方法JS陣列
- JS專題之陣列去重JS陣列
- JS演算法——陣列去重JS演算法陣列
- 好像不是最全的陣列去重方法陣列
- 陣列去重的各種方式對比陣列
- JavaScript陣列去重方法總結JavaScript陣列
- 陣列去重陣列
- js陣列去重,除重的方式(儘可能多)JS陣列
- js中給陣列中物件去重JS陣列物件
- js陣列去重之核心思想JS陣列
- js陣列去重程式碼例項JS陣列