遍歷器與 for of 迴圈

2021-10-22 06:55:42 字數 2010 閱讀 3288

iterator 的作用

iterator:遍歷器(迭代器)

for()

[1, 2].foreach

new set().foreach()

iterator 也是用來遍歷的

尋找 iterator

const it =[1

,2][symbol.iterator]()

;

使用 iterator

const it =[1

,2][symbol.iterator]()

;console.

log(it.

next()

);// console.

log(it.

next()

);// console.

log(it.

next()

);//

it 可遍歷物件(可迭代物件)

symbol.iterator 可遍歷物件的生成方法

什麼是 iterator

symbol.iterator (可遍歷物件的生成方法) -> it(可遍歷物件) -> it.next() -> it.next() -> … (直到done為true)

為什麼需要 iterator 遍歷器

因為可以統一乙個遍歷的方式

如何更方便的使用 iterator 去遍歷

我們一般不會直接使用 iterator 去遍歷

for … of

認識for…of

const arr =[1

,2,3

];for(

const item of arr)

for…of 迴圈只會遍歷出那些 done 為 false 時,對應的 value 值

與 break、continue 一起使用

const arr =[1

,2,3

];for(

const item of arr)

console.

log(item)

;}

在 for…of 中取得陣列的索引

const arr =[1

,2,3

];for(

const key of arr.

keys()

)

// 遍歷陣列值

const arr =[1

,2,3

];for(

const value of arr.

values()

)

const arr =[1

,2,3

];for(

const entrie of arr.

entries()

)for

(const

[index, value]

of arr.

entries()

)

什麼是可遍歷

只要有 symbol.iterator 方法,並且這個方法可以生成可遍歷物件,就是可遍歷的

只要可遍歷,就可以使用 for…of迴圈來統一遍歷

原生可遍歷的有哪些

陣列字串

setmap

arguments

nodelist

非原生可遍歷的有哪些

一般的物件

有length和索引屬性的物件

const obj =

;// 簡單的方法,用 array 的方法

obj[symbol.iterator]

= array.protoype[symbol.iterator]

;

陣列的展開運算子

只要是可遍歷的,就可以用陣列的方式展開

陣列的解構賦值

只要是可遍歷的,就可以用陣列的方式解構賦值

遍歷器 for of 迴圈

for.of 作為遍歷所有資料結構的統一的方法。但不能直接遍歷物件,因為沒有 symbol.iterator 遍歷器介面 所以可用 object.keys object.values 去轉一道,轉成陣列就可以用了。或者給obj symbol.iterator function ary.key 拿到陣...

迭代器和 for of 迴圈

1.for迴圈 支援break continue return等 for var index 0 index myarray.length index 2 foreach 不支援break continue return false相當於continue myarray.foreach functi...

for of迴圈與for in迴圈的區別

const arr red green blue arr.foreach function element,index var arr a b c d for let a in arr for let a of arr let arr 3 5,7 arr.foo hello for let i in...