es6-Set、Map

Set

  • 定義 這是一種無重複值的有序列表(若是添加了重複項至關於添加無效,對象除外,由於他們不會被轉爲字符串類型相同的對象在其中就是兩個object,也沒有類型轉換)。Set容許對它包含的數據進行快速訪問,從而增長了一個追蹤離散值的更有效方式。
  • 基本操做與方法
    let set = new Set(); // 建立set對象
     set.add(5);   // 添加元素,也能夠添加對象
     set.add("5"); // 沒有類型轉換因此能夠添加進去
     console.log(set.size);  // 
     console.log(set.has(5))  // 返回true
     set.delete(5); // 刪除指定元素
     set.clear();   //刪除全部元素
     // 也能夠用數組初始化set對象,一樣的會自動忽略相同值
     let set1 = new Set([1, 2, 3, 4, 5, 5, 5, 5]);  
    複製代碼
  • forEach() 循環遍歷set中元素
    let set = new Set([1, 2, 3]);
     set.forEach(function(vaule, key, ownSet){
         console.log(vaule);    
     });// 第1、二個參數爲set對象首元素,第三個參數爲set自身
    複製代碼
    forEach中回調函數要使用this值時在整個的第二個參數加上this,或者使用箭頭函數。
    set.forEach((value) => this.output(value));
    複製代碼
  • set對象轉換爲數組(剩餘運算符實現)
    let set = new Set([1, 2, 3]);
     let arr = [...set];
    複製代碼
    那麼以這種方式咱們多了一種數組去重的辦法:
    function deWeight(arr) {
         return [...(new Set(arr))];
     } // 將數組對象轉化爲set對象存儲在轉爲數組
     let arr = [1, 1, 1, 1, 1, 2];
     console.log(deWeight(arr));
    複製代碼
  • weakSet 是set對象的一個弱引用,set方法存入的對象當對象指定在外部指定去除時set對象內部任然會有,weakSet更加像是一個指向性的對象外部去除內部也不會存在 幾點區別
    • weakSet各類方法只能傳入對象
    • 沒有forEach方法

Map

  • 定義 Map更像是一種數據關聯,爲能夠爲一個對象設置一個鍵值一塊兒存儲到Map對象,而後經過鍵值去訪問到數據,json中鍵值只能是字符型,但Map鍵值均可以。
  • 基本操做方法 存入爲set、訪問爲get,都是經過操做鍵值(鍵值能夠是對象),其餘與set對象相同。
    // 定義添加
     let map = new Map();
     map.set(鍵值,鍵值對應值);
     // 直接添加
     let map = new Map([["name", "Nicholas"], ["age", 25]]);
    複製代碼
  • Map的forEach方法 用法與set對象一致,相對於理解上Map的該方法更能說通三個參數爲鍵值、鍵值對應值、對象自己。
  • weakMap 與前面所介紹weakSet的各項特色一致。簡化了構建私有化對象的問題,這邊是書本上看到的一個私有化案例還不是很懂意思,還需琢磨一下。
    let Person = (function() {
         let privateData = new WeakMap();
         function Person(name) {
             privateData.set(this, { name: name });
         }
         Person.prototype.getName = function() {
             return privateData.get(this).name;
         };
         return Person;
         }());
    複製代碼
相關文章
相關標籤/搜索