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...