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

首頁(yè) > 編程 > JavaScript > 正文

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

2019-11-19 12:15:50
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

一、普通的方法去重

1、簡(jiǎn)單的去重方法

// 最簡(jiǎn)單數(shù)組去重法/** 新建一新數(shù)組,遍歷傳入數(shù)組,值不在新數(shù)組就push進(jìn)該新數(shù)組中* IE8以下不支持?jǐn)?shù)組的indexOf方法*/function uniq(array){  var temp = []; //一個(gè)新的臨時(shí)數(shù)組  for(var i = 0; i < array.length; i++){    if(temp.indexOf(array[i]) == -1){      temp.push(array[i]);    }  }  return temp;}var newArray = [1,2,2,4,9,6,7,5,2,3,5,6,5];console.log(uniq(newArray));// [1, 2, 4, 9, 6, 7, 5, 3]/*var newArray = ['mu','zi','dig','big','z','mu','zi','muzidigbig']console.log(uniq(newArray));//["mu", "zi", "dig", "big", "z", "muzidigbig"]*/

2、數(shù)組下標(biāo)法

/** 還是得調(diào)用“indexOf”性能跟方法1差不多,* 實(shí)現(xiàn)思路:如果當(dāng)前數(shù)組的第i項(xiàng)在當(dāng)前數(shù)組中第一次出現(xiàn)的位置不是i,* 那么表示第i項(xiàng)是重復(fù)的,忽略掉。否則存入結(jié)果數(shù)組。*/function uniq(array){  var temp = [];  for(var i = 0; i < array.length; i++) {    //如果當(dāng)前數(shù)組的第i項(xiàng)在當(dāng)前數(shù)組中第一次出現(xiàn)的位置是i,才存入數(shù)組;否則代表是重復(fù)的    if(array.indexOf(array[i]) == i){      temp.push(array[i])    }  }  return temp;}var aa = [1,2,"2",4,9,"a","a",2,3,5,6,5];console.log(uniq(aa));//[1, 2, "2", 4, 9, "a", 3, 5, 6]

3、排序后相鄰去除法

/** 給傳入數(shù)組排序,排序后相同值相鄰,* 然后遍歷時(shí),新數(shù)組只加入不與前一值重復(fù)的值。* 會(huì)打亂原來(lái)數(shù)組的順序*/function uniq(array){  array.sort();  console.log(array.sort());  var temp=[array[0]];  for(var i = 1; i < array.length; i++){    if( array[i] !== temp[temp.length-1]){      temp.push(array[i]);    }  }  return temp;}var aa = [1,2,"2",4,9,"a","a",2,3,5,6,5];console.log(uniq(aa));//[1, "2", 2, 3, 4, 5, 6, 9, "a"]

4、優(yōu)化遍歷數(shù)組法

// 思路:獲取沒(méi)重復(fù)的最右一值放入新數(shù)組/** 推薦的方法* 方法的實(shí)現(xiàn)代碼相當(dāng)酷炫,* 實(shí)現(xiàn)思路:獲取沒(méi)重復(fù)的最右一值放入新數(shù)組。* (檢測(cè)到有重復(fù)值時(shí)終止當(dāng)前循環(huán)同時(shí)進(jìn)入頂層循環(huán)的下一輪判斷)*/function uniq(array){  var temp = [];  var index = [];  var l = array.length;  for(var i = 0; i < l; i++) {    for(var j = i + 1; j < l; j++){      if (array[i] === array[j]){        i++;        j = i;      }    }    temp.push(array[i]);    index.push(i);  }  console.log(index);//[0, 2, 5, 6, 7, 8, 9]  return temp;}var aa = [1,2,2,3,5,3,6,5,'3','muzi'];console.log(uniq(aa));// [1, 2, 3, 6, 5, "3", "muzi"]

5.數(shù)組includes()去重

//利用數(shù)組原型對(duì)象上的includes方法function unique(arr){ var bArr= []; for(var i=0; i<arr.length; i++){  if( !bArr.includes(arr[i]) ){ // 如果bArr新數(shù)組包含當(dāng)前循環(huán)item   bArr.push(arr[i]);  } } return bArr;}var aa = [1,2,2,3,5,3,6,5,'3','muzi'];console.log(unique(aa))//[1, 2, 3, 5, 6, "3", "muzi"]

6.數(shù)組原型對(duì)象上的filter和includes方法

//利用數(shù)組原型對(duì)象上的filter和includes方法function unique6(arr){ var bArr= []; bArr= arr.filter(function(item){ return bArr.includes(item) ? null : bArr.push(item); }); return bArr;}var aa = [1,2,2,3,5,3,6,5,'3','muzi'];console.log(unique6(aa))//[1, 2, 3, 5, 6, "3", "muzi"]

7.數(shù)組原型對(duì)象上的forEach和includes方法

//利用數(shù)組原型對(duì)象上的forEach和includes方法function unique7(arr){ var bArr= []; arr.forEach(function(item){  bArr.includes(item) ? null : bArr.push(item); });  return bArr;}var aa = [1,2,2,3,5,3,6,5,'3','muzi'];console.log(unique7(aa))//[1, 2, 3, 5, 6, "3", "muzi"]

二、原型對(duì)象去重

方法一:

思路:1)構(gòu)建一個(gè)臨時(shí)數(shù)組存放結(jié)果;

            2)循環(huán)遍歷當(dāng)前數(shù)組,判斷當(dāng)前數(shù)組下標(biāo)為i的元素是否已經(jīng)保存在臨時(shí)數(shù)組,如果已保存,則跳過(guò),否則將此元素保存到臨時(shí)數(shù)組中。

  Array.prototype.method1 = function(){    var arr=[];  //定義一個(gè)臨時(shí)數(shù)組    for(var i = 0; i < this.length; i++){  //循環(huán)遍歷當(dāng)前數(shù)組      //判斷當(dāng)前數(shù)組下標(biāo)為i的元素是否已經(jīng)保存到臨時(shí)數(shù)組      //如果已保存,則跳過(guò),否則將此元素保存到臨時(shí)數(shù)組中      if(arr.indexOf(this[i]) == -1){        arr.push(this[i]);      }    }    return arr;  };  var arrNum1 = [1,4,1,1,3,3,4,6,7,8,3,7,0,2,11,2,'muzi','digbig','muzi'];  console.log(arrNum1.method1());//[1, 4, 3, 6, 7, 8, 0, 2, 11, "muzi", "digbig"]

三、es6去重

  let arr = [1,2,2,3,4,4,4];  let s = new Set(arr);  //結(jié)果:Set {1,2,3,4}  let newArr = Array.from(s);  //結(jié)果:[1,2,3,4],完成去重

若有不足請(qǐng)多多指教!希望給您帶來(lái)幫助!

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)武林網(wǎng)的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 财经| 富川| 海林市| 涟源市| 兴业县| 永和县| 镇原县| 邹城市| 台南市| 新疆| 南康市| 分宜县| 呼玛县| 甘肃省| 集贤县| 内江市| 大理市| 五河县| 富蕴县| 梅河口市| 汝州市| 缙云县| 洛隆县| 桃江县| 武隆县| 徐水县| 洞口县| 堆龙德庆县| 慈溪市| 轮台县| 四子王旗| 白沙| 班戈县| 华坪县| 荥经县| 辰溪县| 阿合奇县| 镇远县| 收藏| 永康市| 湘阴县|