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

首頁 > 編程 > JavaScript > 正文

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

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

前言

在做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ù)組進(jìn)行排序才能方便比較    return a - b;  })  function loop(index){    if(index >= 1){      if(arr[index] === arr[index-1]){        arr.splice(index,1);      }      loop(index - 1);  //遞歸loop函數(shù)進(jìn)行去重    }  }  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]

方法六 拓展運(yùn)算符(…)內(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ù)組進(jìn)行修改,希望這篇文章對大家能有所幫助,如果有疑問大家可以留言交流。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 瑞安市| 阿拉善左旗| 安仁县| 龙州县| 镇康县| 汪清县| 玉龙| 姚安县| 偏关县| 延吉市| 伊宁县| 永昌县| 当雄县| 沅陵县| 高邮市| 花莲市| 简阳市| 满洲里市| 林口县| 毕节市| 浦东新区| 攀枝花市| 天津市| 洛阳市| 安仁县| 广德县| 胶南市| 惠州市| 靖西县| 廉江市| 商水县| 济阳县| 库尔勒市| 栖霞市| 比如县| 佛教| 丹东市| 青川县| 天峨县| 泰来县| 临海市|