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

總結(jié)Javascript中數(shù)組各種去重的方法

 更新時間:2016年10月04日 18:40:12   投稿:daisy  
相信大家都知道網(wǎng)上關(guān)于Javascript中數(shù)組去重的方法很多,這篇文章給大家總結(jié)Javascript中數(shù)組各種去重的方法,相信本文對大家學(xué)習(xí)和使用Javascript具有一定的參考借鑒價值,有需要的下面來一起看看。

前言

在做javascript開發(fā)的時候,經(jīng)常會遇到數(shù)組元素重復(fù)的問題,而javascript Array又沒有直接提供方法解決此問題,還需要自己去實現(xiàn)。這篇文章總結(jié)了Javascript中數(shù)組各種去重的方法,下面來一起看看。

方法一 利用對象屬性不重復(fù)的特性

Array.prototype.distinct = function (){
  var arr = this,
    i,
    obj = {},
    result = [],
    len = arr.length;
  for(i = 0; i< arr.length; i++){
    if(!obj[arr[i]]){  //如果能查找到,證明數(shù)組元素重復(fù)了
      obj[arr[i]] = 1;
      result.push(arr[i]);
    }
  }
  return result;
};

方法二 雙層循環(huán),外層循環(huán)元素,內(nèi)層循環(huán)時比較值

Array.prototype.distinct = function(){
  var arr = this,
    result = [],
    i,
    j,
    len = arr.length;
  for(i = 0; i < len; i++){
    for(j = i + 1; j < len; j++){
      if(arr[i] === arr[j]){
        j = ++i;
      }
    }
    result.push(arr[i]);
  }
  return result;
}

方法三 數(shù)組遞歸去重

Array.prototype.distinct = function (){
  var arr = this,
    len = arr.length;
  arr.sort(function(a,b){    //對數(shù)組進行排序才能方便比較
    return a - b;
  })
  function loop(index){
    if(index >= 1){
      if(arr[index] === arr[index-1]){
        arr.splice(index,1);
      }
      loop(index - 1);  //遞歸loop函數(shù)進行去重
    }
  }
  loop(len-1);
  return arr;
};

方法四 利用indexOf以及forEach

Array.prototype.distinct = function (){
  var arr = this,
    result = [],
    len = arr.length;
  arr.forEach(function(v, i ,arr){    //這里利用map,filter方法也可以實現(xiàn)
    var bool = arr.indexOf(v,i+1);    //從傳入?yún)?shù)的下一個索引值開始尋找是否存在重復(fù)
    if(bool === -1){
      result.push(v);
    }
  })
  return result;
};

方法五 利用ES6的set

function dedupe(array){
  return Array.from(new Set(array));
}
dedupe([1,1,2,3]) //[1,2,3]

方法六 拓展運算符(…)內(nèi)部使用for…of循環(huán)

let arr = [3,5,2,2,5,5];
let unique = [...new Set(arr)];  //[3,5,2]

總結(jié)

好了,以上就是這篇文章的全部內(nèi)容了,個人比較喜歡使用方法一,不會對原數(shù)組進行修改,希望這篇文章對大家能有所幫助,如果有疑問大家可以留言交流。

相關(guān)文章

最新評論

禄劝| 陆良县| 湾仔区| 乃东县| 正蓝旗| 嘉荫县| 淄博市| 杂多县| 博乐市| 鹤岗市| 竹溪县| 沈丘县| 无为县| 神农架林区| 子洲县| 丰镇市| 承德县| 新巴尔虎左旗| 比如县| 伊宁县| 曲松县| 道孚县| 泸溪县| 玉山县| 启东市| 杨浦区| 福州市| 呼和浩特市| 黄梅县| 陕西省| 广德县| 黄龙县| 嘉鱼县| 图木舒克市| 松溪县| 巧家县| 宜兴市| 喜德县| 长治县| 固始县| 双柏县|