国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

js數組去重的幾種方法

mykurisu / 801人閱讀

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

三種方法 利用indexOf判斷新數組

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

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

利用indexOf判斷舊數組

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

利用hash查找


這里利用了JS對象的實現就是hash表的特性

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

數組擴展

  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 = []; //結果數組
      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中新增的數據結構

Set直接可以存儲不重復的一組key,這個key也可以是對象,字符串等

創建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類型,Array、MapSet都屬于iterable類型

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

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

或者直接使用iterable內置的forEach方法

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

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

最全前端面試問題

廖雪峰-Map和Set

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/85852.html

相關文章

  • JS去重幾種實現方法

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

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

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

    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數組重的集中方案

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

    wslongchen 評論0 收藏0

發表評論

0條評論

mykurisu

|高級講師

TA的文章

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