国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript常見的五種數組去重的方式

2019-11-19 18:28:10
字體:
來源:轉載
供稿:網友

大致介紹

JavaScript的數組去重問題在許多面試中都會遇到,現在做個總結

先來建立一個數組

var arr = [1,2,3,3,2,'我','我',34,'我的',NaN,NaN];

第一種

思路:建立一個臨時數組,用for循環去依次判斷arr中的每個項在臨時數組中是否有相同的值,如果沒有則將這個值添加到臨時數組,如果有相同的值則不添加,最后返回這個臨時數組

代碼:

Array.prototype.removeDuplicate = function(){  var n = [];  for(var i=0;i<this.length;i++){  if(n.indexOf(this[i]) == -1 ){  n.push(this[i]);  }  } return n;}var m = arr.removeDuplicate();console.log(m);//[1, 2, 3, "我", 34, "我的", NaN, NaN]

注意:不會去掉重復的NaN值

第二種   

思路:建立一個臨時數組,用for循環利用indexOf()方法去依次判斷arr中的每個項在arr中第一次出現的位置,如果這個項在arr中第一次出現的位置就是它的位置,表明在它之前沒有相同的值則把它添加到臨時數組中,如果這個項在arr中第一次出現的位置不是他的位置則表明在它之前有相同的值,則不把他添加到臨時數組中;最后返回臨時數組

代碼:

Array.prototype.removeDuplicate = function(){  var n = [];  for(var i=0;i<this.length-1;i++){  if(this.indexOf(this[i]) == i){  n.push(this[i]);  }  } return n; } var m = arr.removeDuplicate(); console.log(m);//[1, 2, 3, "我", 34, "我的"]

注意:會把NaN值刪除

第三種

思路:建立一個臨時對象,利用for循環檢測這個臨時對象有沒有arr[i]這個屬性,如果沒有這個屬性表明arr[i]在它之前沒有和它重復的值。把臨時對象的arr[i]屬性設置為true,表明有這個屬性并把這個項添加到臨時數組中;最后返回臨時數組

代碼:

Array.prototype.removeDuplicate = function(){  var n = [],m = {};  for(var i=0;i<this.length;i++){  if(!m[this[i]]){  m[this[i]] = true;  n.push(this[i]);  }  } return n; }var m = arr.removeDuplicate();console.log(m);//[1, 2, 3, "我", 34, "我的", NaN]

第四種

思路:先將這個數組排序,然后比較每個項和它后面的項的值是否相等,如果不相等則添加到臨時數組中;最后返回臨時數組

代碼:

Array.prototype.removeDuplicate = function(){ var n = []; this.sort(); for(var i=0;i<this.length;i++){ if(this[i] != this[i+1]){  n.push(this[i]);  } } return n; }var m = arr.removeDuplicate();console.log(m);//[1, 2, 3, 34, NaN, NaN, "我", "我的"]

注意:不會去掉重復的NaN值

第五種

思路:利用ES6的方法set方法去重,并用Array.from轉換為數組

set是一種新的數據結構,它可以接收一個數組或者是類數組對象,自動去重其中的重復項目,返回一個對象

代碼:

Array.prototype.removeDuplicate = function(){ return (Array.from(new Set(this))); } var m = arr.removeDuplicate(); console.log(m);//[1, 2, 3, "我", 34, "我的", NaN]

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通州市| 桦南县| 南华县| 平顶山市| 镇雄县| 洛浦县| 长寿区| 望谟县| 海丰县| 伊川县| 即墨市| 务川| 商城县| 怀来县| 家居| 盐池县| 中西区| 白山市| 东乡县| 兰溪市| 探索| 平昌县| 宁陵县| 吉木萨尔县| 卢龙县| 岳池县| 阿坝| 宿松县| 南木林县| 武鸣县| 黔东| 高雄县| 滦平县| 长治市| 海城市| 乐亭县| 长子县| 泉州市| 青河县| 温州市| 新邵县|