es6 iterator 迭代器的學習總結

2021-10-07 09:04:59 字數 1736 閱讀 8151

===

*****=

*****=

*****=迭代器===

*****=

*****=

*****=

====

背景知識:

1. 什麼是迭代?

從乙個資料集合中按照一定的順序,不斷取出資料的過程

2. 迭代和遍歷的區別?

迭代強調的是依次取資料,並不保證取多少,也不保證把所有的資料取完

遍歷強調的是要把整個資料依次全部取出

3. 迭代器

對迭代過程的封裝,在不同語言中有不同的表現形式,通常為物件

4. 迭代模式

一種設計模式,用於同一迭代過程,並規範了迭代器規格:

迭代器應該具有得到下乙個資料的能力

迭代器應該具有判斷是否還有後續資料的能力

js中的迭代器

js規定,如果乙個物件具有next方法,並且 該方法返回乙個物件,該物件的格式如下:

例如:const obj =}}

則認為該物件是乙個迭代器

next

() 含義:

返回的物件:

value: 下乙個資料的值

done: boolean,是否迭代完成

例如: 陣列的迭代器:

// 迭代器建立函式

function

createiterator

(arr)

this

.i++

;return result;}}

return iterator;

}const arr =[1

,2,3

,4,5

];const result =

createiterator

(arr)

; 可迭代協議

es6規定,如果乙個物件具有知名符號屬性: symbol.iterator, 並且屬性值是乙個迭代器建立函式,

則該物件是可迭代的(iterator)

例如:const obj =}}

}}如何判斷乙個物件是否可以迭代: 通過原型上去找是否含有 [symbol.iterator] 知名符號屬性的方法

es6中陣列,已經做成了乙個可迭代的物件:

例如:const arr =[1

,2,3

,4,5

,6];

connst iterator = arr[symbol.iterator]()

; iterator.

next()

; 可以一直執行

dom中的許多類陣列也是乙個可迭代的物件:

如何遍歷迭代器:

const arr =[1

,2,3

,4,5

,6];

connst iterator = arr[symbol.iterator]()

;let result = iterator.

next()

;while

(!result.done)

es6 為了統一迭代方法: 提出了for

of 迴圈

forof 迴圈用於遍歷可迭代物件, 格式如下:

for(const item in iterable)

for(

const item of arr)

展開運算子與可迭代物件: 展開運算子可以作用與迭代物件,這樣,就可以輕鬆的將可迭代物件轉換為陣列

ES2015 迭代器模式 Iterator

設計模式 迭代器模式 迭代器設計模式 場景 你和我協同開發乙個任務清單應用 我的 const todolist 你的 for const item of todolist.life for const item of todolist.study 如果我需要在我的todolist 資料列表裡新增資料...

ES6的 迭代器

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

迭代器模式(Iterator)

迭代器模式 iterator 提供一種方法順序訪問乙個聚合物件中的各種元素,而又不暴露該物件的內部表示。當你需要訪問乙個聚合物件,而且不管這些物件是什麼都需要遍歷的時候,就應該考慮使用迭代器模式。另外,當需要對聚集有多種方式遍歷時,可以考慮去使用迭代器模式。迭代器模式為遍歷不同的聚集結構提供如開始 ...