最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2015年07月29日 11:28:50   投稿:hebedich  
本文給大家匯總介紹了3種javascript數(shù)組去重的方法以及示例,十分的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。

三種方法

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

underscore.js中實(shí)際上也是使用的類似的indexOf

 //傳入數(shù)組
 function unique1(arr){
  var tmpArr = [];
  for(var i=0; i<arr.length; i++){
   //如果當(dāng)前數(shù)組的第i已經(jīng)保存進(jìn)了臨時(shí)數(shù)組,那么跳過,
   //否則把當(dāng)前項(xiàng)push到臨時(shí)數(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項(xiàng)在當(dāng)前數(shù)組中第一次出現(xiàn)的位置不是i,
   //那么表示第i項(xiàng)是重復(fù)的,忽略掉。否則存入結(jié)果數(shù)組
   if(arr.indexOf(arr[i]) == i){
    tmpArr.push(arr[i]);
   }
  }
  return tmpArr;
 }

利用hash查找

這里利用了JS對(duì)象的實(shí)現(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)前項(xiàng)
    hash[arr[i]] = true;//存入hash表
    tmpArr.push(arr[i]);//存入臨時(shí)數(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直接可以存儲(chǔ)不重復(fù)的一組key,這個(gè)key也可以是對(duì)象,字符串等
創(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ù)元素不會(huì)被添加

刪除元素

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

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

相關(guān)文章

最新評(píng)論

太原市| 当涂县| 南漳县| 扎兰屯市| 灵台县| 普定县| 平泉县| 沁源县| 天镇县| 册亨县| 汉寿县| 文山县| 平定县| 临沂市| 准格尔旗| 特克斯县| 徐闻县| 镇坪县| 乐昌市| 邢台县| 专栏| 平遥县| 绥阳县| 萨嘎县| 弥勒县| 汾阳市| 密山市| 慈溪市| 金湖县| 翁源县| 江华| 崇州市| 鄂伦春自治旗| 承德市| 顺平县| 库尔勒市| 集安市| 紫金县| 绍兴县| 灵武市| 安丘市|