麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

js數組去重的三種常用方法總結

2019-11-20 21:12:45
字體:
來源:轉載
供稿:網友

第一種是比較常規的方法

思路:

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());


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美一级做一级爱a做片性 久久久资源网 | 精品一二三区视频 | 视频一区二区不卡 | 国产免费黄色 | 成人午夜精品久久久久久久3d | 999插插插 | 一级α片| 成人毛片网站 | 国产一区二区三区影视 | 国产精品无码久久久久 | 天天色宗合 | 在线观看国产免费视频 | 国产一级aaa全黄毛片 | 粉嫩一区 | 久久精品网 | 亚洲成人在线视频网站 | 综合日韩av | 美女网站黄在线观看 | 色成人在线 | 日本残忍极度灌浣肠视频 | 国产91免费看 | 国产精品91久久久 | 亚洲一区二区三区日本久久九 | 国产精品自拍av | 国产妇女乱码一区二区三区 | 亚洲午夜一区二区三区 | 久久草在线视频国产 | 国产精品视频1区 | 午夜国产小视频 | 欧美性生活xxxxx | 色就操| 久久精品亚洲国产奇米99 | 欧美日韩一区,二区,三区,久久精品 | 日本黄色不卡视频 | 欧美女优一区 | 国产精品免费观在线 | 免费网址黄 | 国产精品观看在线亚洲人成网 | 久久国产28| 天天看天天摸天天操 | av免费在线播放网址 |