成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

js數(shù)組去重的幾種方法

mykurisu / 812人閱讀

摘要:三種方法利用判斷新數(shù)組中實際上也是使用的類似的傳入數(shù)組如果當前數(shù)組的第已經(jīng)保存進了臨時數(shù)組,那么跳過,否則把當前項到臨時數(shù)組里面利用判斷舊數(shù)組結(jié)果數(shù)組如果當前數(shù)組的第項在當前數(shù)組中第一次出現(xiàn)的位置不是,那么表示第項是重復的,忽略掉。

三種方法 利用indexOf判斷新數(shù)組

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

  //傳入數(shù)組
  function unique1(arr){
    var tmpArr = [];
    for(var i=0; i

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

  function unique2(arr){
    var tmpArr = []; //結(jié)果數(shù)組
    for(var i=0; i

利用hash查找


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

  function unique3(arr){
    var tmpArr = [], hash = {};//hash為hash表
    for(var i=0;i

數(shù)組擴展

  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

SetMap是ES6中新增的數(shù)據(jù)結(jié)構(gòu)

Set直接可以存儲不重復的一組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}//重復元素不會被添加
刪除元素
s; // Set {1, 2, 3, 4}
s.delete(3);
s; // Set {1, 2, 4}
遍歷元素

MapSet無法使用下標

ES6標準引入了新的iterable類型,ArrayMapSet都屬于iterable類型

var s = new Set(["A", "B", "C"]);

for (var x of s) { // 遍歷Set
    alert(x);
}

或者直接使用iterable內(nèi)置的forEach方法

forEach方法是ES5.1標準引入的

var s = new Set(["A", "B", "C"]);
s.forEach(function (element, set) {
    alert(element);
});
參考文章

最全前端面試問題

廖雪峰-Map和Set

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/85852.html

相關(guān)文章

  • JS去重幾種實現(xiàn)方法

    摘要:方法新特性方法利用對象名唯一方法利用數(shù)組包含方法排序比較兄弟元素方法雙循環(huán)比較 方法1:ES6新特性Set Array.prototype.rmSome = function() { return Array.from(new Set(this)); } 方法2:利用對象名唯一 Array.prototype.rmSome = function() { let te...

    shengguo 評論0 收藏0
  • 數(shù)組去重--這幾種方法夠不?

    摘要:數(shù)組去重是校招面試的必考知識點。以下就是筆者所實現(xiàn)的數(shù)組去重的幾種簡單的方式。結(jié)合實現(xiàn)這種方法的關(guān)鍵點就是判斷是否相同的時候不要忽略對元素類型的判斷。以上就是筆者所想到的幾個數(shù)組去重的方式大家如果有更好的方法歡迎留言。 數(shù)組去重,是校招面試的必考知識點。簡單的說,數(shù)組去重就是將一個數(shù)組中的相同的元素刪除,只保留其中的一個。這里的相同其實是一個陷阱,有好多同學只認為值相等即為相同,而忽略...

    wendux 評論0 收藏0
  • js去重幾種方法

    摘要:去重真的是面試必考啊。下標判斷,也可以對象的鍵值還要先排序 js去重真的是面試必考啊。 es6 set function duplicate(arr){ return [...new Set(arr)] } indexOf下標判斷,lastIndexOf也可以 function duplicate2(arr){ let res=[]; arr.forEach((item)...

    cnio 評論0 收藏0
  • JS數(shù)組重的集中方案

    摘要:去重的幾種方案雙層循環(huán)排序后比較相鄰元素是否相等壓入數(shù)組有限制,但效率高高性能數(shù)組去重 JS去重的幾種方案 new Set() 雙層for循環(huán) + splice Array.fliter + indexof Arroy.sort + 排序后比較相鄰元素是否相等壓入數(shù)組 for ... of + includes for ... of + object 有限制,但效率高 JS高性能數(shù)組...

    wslongchen 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<