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

首頁 > 語言 > JavaScript > 正文

js數(shù)組去重的三種常用方法總結(jié)

2024-05-06 15:59:49
字體:
供稿:網(wǎng)友
本篇文章主要是對js數(shù)組去重的三種常用方法進(jìn)行了總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助

第一種是比較常規(guī)的方法

思路:

1.構(gòu)建一個新的數(shù)組存放結(jié)果

2.for循環(huán)中每次從原數(shù)組中取出一個元素,用這個元素循環(huán)與結(jié)果數(shù)組對比

3.若結(jié)果數(shù)組中沒有該元素,則存到結(jié)果數(shù)組中

復(fù)制代碼 代碼如下:


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.先將原數(shù)組進(jìn)行排序

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

3.如果不相同,則將該元素存入結(jié)果數(shù)組中

復(fù)制代碼 代碼如下:


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


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

第三種方法(推薦使用)

思路:

1.創(chuàng)建一個新的數(shù)組存放結(jié)果

2.創(chuàng)建一個空對象

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

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

復(fù)制代碼 代碼如下:


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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 许昌县| 万山特区| 孟州市| 会东县| 清流县| 大足县| 台前县| 菏泽市| 灌云县| 长沙市| 金堂县| 孟津县| 利川市| 西和县| 湘潭县| 金寨县| 磐安县| 行唐县| 宣恩县| 青冈县| 洛隆县| 夏津县| 阿拉尔市| 孟州市| 西城区| 麻城市| 班戈县| 德格县| 贡山| 大同县| 女性| 临高县| 静宁县| 梁河县| 新干县| 桃江县| 北流市| 简阳市| 岳池县| 漯河市| 临朐县|