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能夠接受一個數組做爲參數,該數組的成員是一個個表示鍵值對的數組prototype

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

Map 結構的實例有如下屬性。指針

Set.prototype.size:返回 Map 結構的成員總數。

Map 結構的實例有如下方法。code

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對象get

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

原生具有 Iterator 接口的數據結構以下

Array
Map
Set
String
TypedArray
函數的 arguments 對象
NodeList 對象
相關文章
相關標籤/搜索