前端高階攻略之迭代器

2021-10-24 11:58:01 字數 2112 閱讀 6976

1.什麼是迭代?

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

2.迭代和遍歷的區別?

迭代強調的依次取出,不能確定可以取出的值有多少,也不能保證去把資料全部取完

遍歷必須保證資料的長度,迴圈不斷的全部取出,針對於資料量過大的情況下使用遍歷,需要時間過長

3.迭代器

對迭代過程的封裝,通常表現為物件的資料形式(也可以使用陣列),不同語言中,表現出了的迭代形式不一樣

4.迭代模式

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

function

iterator

(arr)

this

.i++

;return result;}}

}var arr1=[1

,2,3

,4,5

,6];

let it=

iterator

(arr1)

;

只要知道迭代器需要滿足的條件,寫乙個原生迭代器還是非常簡單的

最終在控制台中呼叫.next()方法輸出的結果為:

如果用while()迴圈可以讓迭代器自己取資料,直到沒有資料為止

const arr =[1

,2,3

,4,5

]const iterator =

this

.i ++

;return result;}}

console.

log(iterator)

// 讓迭代器自己取資料,直到沒有資料為止

let data = iterator.

next()

;while

(!data.done)

console.

log(

"迭代完成"

);

在es6中如果物件具有知名符號屬性symbol.iterator,則表示該物件可以迭代

const arr =

[464

,878,88

,22,45

,4,8

,7]// // 在es6中如果物件具有知名符號屬性symbol.iterator,則表示該物件可以迭代

console.

log(arr)

const iterator = arr[symbol.iterator]()

;//es6之後,陣列可以直接建立迭代物件

console.

log(iterator.

next()

);// console.

log(iterator.

next()

);// console.

log(iterator.

next()

);// console.

log(iterator.

next()

);console.

log(iterator.

next()

);console.

log(iterator.

next()

);console.

log(iterator.

next()

);console.

log(iterator.

next()

);

使用es6中的知名符號symbol.iterator可以直接建立乙個迭代物件,通過呼叫迭代物件的next()方法,可以直接迭代陣列中的資料

3.1、使用迭代器生成斐波那契數列

下面我們就使用迭代器來自定義自己的乙個斐波那契數列組,我們直到斐波那契數列有兩個執行前提,第乙個前提是初始化的前兩個數字為0,1,第二個前提是將來的每乙個值都是前兩個值的和。這樣我們的目標就是每次都迭代輸出乙個新的值。

迭代器(高階)

此示例示意將自定義的類建立的物件製作成為可迭代物件 class mylist 這是乙個自定義的列表型別,此型別的物件是 用data屬性繫結的列表來儲存資料 def init self,iterable self.data x for x in iterable def repr self retur...

迭代器超詳細攻略

寫的很墨跡,將就看。首先 理解 for 迴圈 for i in 1,2,3,4 print i 這個是正常 如果 for 迴圈乙個 1234 會報錯,因為 int 不是乙個 iterable 型別 iterable 字典裡的意思是 可迭代的,可重複的 可迭代的物件 字串str 列表 list 元組 ...

python迭代器高階

我們之前簡單的了解了一下迭代器,本篇,我們來看看迭代器具體的使用方法吧!lst 1 2,3 4 import dis 引入標準庫dis,用它觀察for迴圈的細節。dis.dis for i in lst pass 1 0 setup loop 12 to 14 2 load name 0 lst 4...