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

首頁 > 編程 > JavaScript > 正文

js數(shù)組去重的方法匯總

2019-11-20 11:58:08
字體:
供稿:網(wǎng)友

三種方法

利用indexOf判斷新數(shù)組

underscore.js中實際上也是使用的類似的indexOf

 //傳入數(shù)組 function unique1(arr){  var tmpArr = [];  for(var i=0; i<arr.length; i++){   //如果當(dāng)前數(shù)組的第i已經(jīng)保存進(jìn)了臨時數(shù)組,那么跳過,   //否則把當(dāng)前項push到臨時數(shù)組里面   if(tmpArr.indexOf(arr[i]) == -1){    tmpArr.push(arr[i]);   }  }  return tmpArr; }

利用indexOf判斷舊數(shù)組

 function unique2(arr){  var tmpArr = []; //結(jié)果數(shù)組  for(var i=0; i<arr.length; i++){   //如果當(dāng)前數(shù)組的第i項在當(dāng)前數(shù)組中第一次出現(xiàn)的位置不是i,   //那么表示第i項是重復(fù)的,忽略掉。否則存入結(jié)果數(shù)組   if(arr.indexOf(arr[i]) == i){    tmpArr.push(arr[i]);   }  }  return tmpArr; }

利用hash查找

這里利用了JS對象的實現(xiàn)就是hash表的特性

 function unique3(arr){  var tmpArr = [], hash = {};//hash為hash表  for(var i=0;i<arr.length;i++){   if(!hash[arr[i]]){//如果hash表中沒有當(dāng)前項    hash[arr[i]] = true;//存入hash表    tmpArr.push(arr[i]);//存入臨時數(shù)組   }  }  return tmpArr; }

數(shù)組擴(kuò)展

 Array.prototype.unique1 = function (){  var tmpArr = [];   for (var i = 0; i < this.length; i++){   if (tmpArr.indexOf(this[i]) == -1){    tmpArr.push(this[i]);   }  }  return tmpArr; } Array.prototype.unique2 = function(){   var tmpArr = []; //結(jié)果數(shù)組   for(var i = 0; i < this.length; i++){    if (this.indexOf(this[i]) == i){     tmpArr.push(this[i]);    }   }   return tmpArr; } Array.prototype.unique3 = function(){   var tmpArr=[], hash = {};   for(var i = 0; i < this.length; i++){    if (!hash[this[i]]){      hash[this[i]] = true;       tmpArr.push(this[i]);     }   }   return tmpArr; }

使用Set

Set和Map是ES6中新增的數(shù)據(jù)結(jié)構(gòu)
Set直接可以存儲不重復(fù)的一組key,這個key也可以是對象,字符串等
創(chuàng)建set

var s = new Set([1, 2, 3,]);s; // Set {1, 2, 3}

新增元素

>>> s.add(4)>>> s{1, 2, 3, 4}>>> s.add(4)>>> s{1, 2, 3, 4}//重復(fù)元素不會被添加

刪除元素

s; // Set {1, 2, 3, 4}s.delete(3);s; // Set {1, 2, 4}

遍歷元素

Map和Set無法使用下標(biāo)
ES6標(biāo)準(zhǔn)引入了新的iterable類型,Array、Map和Set都屬于iterable類型

var s = new Set(['A', 'B', 'C']);for (var x of s) { // 遍歷Set  alert(x);}

或者直接使用iterable內(nèi)置的forEach方法
forEach方法是ES5.1標(biāo)準(zhǔn)引入的

var s = new Set(['A', 'B', 'C']);s.forEach(function (element, set) {  alert(element);});

以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 丘北县| 雷波县| 大连市| 香格里拉县| 浦城县| 鄂尔多斯市| 鄂伦春自治旗| 泰州市| 滕州市| 电白县| 都安| 商南县| 宽甸| 徐州市| 阜新市| 闵行区| 固原市| 湘潭县| 友谊县| 临城县| 勃利县| 汉阴县| 宝清县| 获嘉县| 读书| 柳州市| 德清县| 泰顺县| 郓城县| 临武县| 儋州市| 新宾| 南漳县| 长宁县| 高密市| 博爱县| 措勤县| 双牌县| 航空| 平罗县| 鸡西市|