Es6中的Set和Map數據結構以及Iterator(遍歷器)的觀點

Set和Map數據組織以及Iterator(遍歷器)的觀點

  • Set

無序不可反覆的鳩合
1.實例化

new Set();
new Set([]);
new Set('terry');// t e r y

2.Set實例可以挪用的要領

Set 組織的實例有以下屬性。

    Set.prototype.constructor:組織函數,默許就是Set函數。
    Set.prototype.size:返回Set實例的成員總數。

Set 組織的實例有以下要領。

    add(value):增加某個值,返回Set組織自身
    delete(value):刪除某個值,返回一個布爾值,示意刪除是不是勝利。
    has(value):返回一個布爾值,示意該值是不是為Set的成員。
    clear():消滅一切成員,沒有返回值。
    keys():返回鍵名的遍歷器
    values():返回鍵值的遍歷器
    entries():返回鍵值對的遍歷器
    forEach():運用回調函數遍歷每一個成員
    Set自身就是就是一個組織函數,用來天生Set數據組織


    let set = new Set();
    set.add(1);    //增加數據
    set.add(2);
    set.add(3);
    set.add(2);
    console.log(set);    //set{1,2,3}

運用:去除數組中反覆元素的要領

    let arr = [1,2.3,4,3,2,1];
    let set = new Set(arr);
    let result = [...set];    //set轉換為數組
  • Map

Map可以接收一個數組作為參數,該數組的成員是一個個示意鍵值對的數組

let map = new Map();
map.set('name','terry');
const map = new Map([ ['name', '張三'], ['title', 'Author'] ]);

Map 組織的實例有以下屬性。

Set.prototype.size:返回 Map 組織的成員總數。

Map 組織的實例有以下要領。

set(key, value):set要領設置鍵名key對應的鍵值為value,然後返回全部 Map 組織。假如key已經有值,則鍵值會被更新,不然就新天生該鍵。
get(key):get要領讀取key對應的鍵值,假如找不到key,返回undefined。
has(key):has要領返回一個布爾值,示意某個鍵是不是在當前 Map 對象當中。
delete(key):delete要領刪除某個鍵,返回true。假如刪除失利,返回false。
clear():消滅一切成員,沒有返回值
keys():返回鍵名的遍歷器
values():返回鍵值的遍歷器
entries():返回鍵值對的遍歷器
forEach():運用回調函數遍歷每一個成員
  • Iterator

遍歷器(Iterator)就是如許一種機制。它是一種接口,為種種差別的數據組織供應一致的接見機制。任何數據組織只需布置Iterator接口,就可以完成遍歷操縱(即順次處理該數據組織的一切成員)

Iterator 的作用有三個:
  1. 為種種數據組織,供應一個一致的、輕便的接見接口;
  2. 使得數據組織的成員可以按某種序次分列;
  3. ES6製造了一種新的遍歷敕令for…of輪迴,Iterator接口重要供for…of消耗。

Iterator 的遍歷歷程:

  1. 建立一個指針對象,指向當前數據組織的肇端位置。也就是說,遍歷器對象本質上,就是一個指針對象。
  2. 第一次挪用指針對象的next要領,可以將指針指向數據組織的第一個成員。
  3. 第二次挪用指針對象的next要領,指針就指向數據組織的第二個成員。
  4. 不停挪用指針對象的next要領,直到它指向數據組織的完畢位置。

默許Iterator接口

Iterator 接口的目標,就是為一切數據組織,供應了一種一致的接見機制,即for…of輪迴(詳見下文)。當運用for…of輪迴遍歷某種數據組織時,該輪迴會自動去尋覓 Iterator 接口。一種數據組織只需布置了 Iterator 接口,我們就稱這類數據組織是“可遍歷的”(iterable)。
可以經由過程以下要領接見Iterator對象

var iterator = iterObj[Symbol.iterator]();

原生具有 Iterator 接口的數據組織以下

Array
Map
Set
String
TypedArray
函數的 arguments 對象
NodeList 對象



    原文作者:純純王
    原文地址: https://segmentfault.com/a/1190000015105243
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞