ES6的 迭代器

2021-10-21 00:27:50 字數 1276 閱讀 4524

1,iterator 迭代器是es6提出的一種新的遍歷機制,目的是讓各種資料結構可方便地被訪問。可迭代物件由symbol.iterator實現,用symbol.iterator作為物件的屬性,鍵symbol.iterator的值是個函式,函式的執行返回乙個陣列的迭代器,可見 迭代器物件與symbol.iterator之間的關係。symbol.iterator標識著迭代器。

2, 遍歷迭代器, 可用 for...of...,for...of...是es6用來遍歷迭代器的一種工具。for...of...不同於for...in...,for...in...用於遍歷物件的屬性,for...of...用於遍歷物件的值。如:

var testarr = [4, 5, 7, 3]; //可迭代物件,es6已經為組數實現了可迭代

for(var key in testarr)

//控制台輸出:

//0//1

//2//3

for(var val of testarr)

//控制台輸出:

//4//5

//7//3

var testarr = [4, 5, 7, 3];

var iterator = testarr[symbol.iterator]();

//iterator是個陣列的迭代器物件:array iterator {}

//...

iterator.next();

//這個時候遍歷完成,返回物件的done屬性為true

////有一點可以注意的是:當iterator沒有遍歷完成之前,向陣列新增的元素,可由iterator.next訪問,

//但一旦iterator完成了遍歷後,新增的元素無法被iterator訪問,但可生成乙個新的iterator從頭遍歷;

iterator = testarr[symbol.iterator]();

iterator.next();

//5 陣列長度

...iterator.next();

iterator.next(); //iterator已經遍歷完成了;

////還有一點需要注意的是: 若是元素新增在陣列的前面即arr.shift,則會影響當前的iterator指標的指向;

//貌似指標往後移動了;可能跟記憶體儲存有關,為什麼會這樣?將是個新的知識點;

4,目前實現迭代器的物件有 array、map、set、string等但不包括 object物件。

5,其他文件

generator

symbol

es6內容總結 三 迭代器

迭代器 生成器1.迭代器 迭代器 iterator 是一種介面,為各種不同的資料結構提供統一的訪問機制,任何資料結構只要部署iterator 介面,就可以完成遍歷操作。原生具備 iterator 介面的資料 可用for of 遍歷 array arguments setmap string type...

ES6的迭代器和生成器

在es6之前,遍歷陣列都需要使用for迴圈,通過變數來跟蹤陣列的索引。如果多個迴圈巢狀就需要追蹤多個變數,複雜度會大大增加,也容易產生錯用迴圈變數的bug。es6 引入了乙個全新的迭代器的概念,它提供一種方法能夠順序訪問乙個聚合物件中的各個元素,而不需要暴露該物件的內部表現。es6 對迭代器物件的定...

es6 在迭代器中獲取非同步的值

由於迭代器在主線程中執行,所以我們普通 所以無法王成兩個yield的同步操作,下面我們完成同步操作,就是把yield2的操作在子執行緒王成 例子 function main2 fn const list main2 function console.log finish.dd return dd 注...