
Iterator
ループ可能なArray, Map型はイテレーターを使って任意のタイミングで値を列挙していくことができます。
// 変数を定義
> const fruits = ["apple", "banana", "orange"]
// イテレーターを取得
> let fruits_iterator = fruits.values()
// イテレーターから値を取得する
> let fruit = fruits_iterator.next()
// 取得した値のvalueを参照する
> console.log(fruit.value)
banana
// 終端フラグを参照する
> console.log(fruit.done)
false
> console.log(fruit)
{ value: 'apple', done: false }
> console.log(fruits_iterator.next())
{ value: 'banana', done: false }
> console.log(fruits_iterator.next())
{ value: 'orange', done: false }
> console.log(fruits_iterator.next())
{ value: undefined, done: true }
array.values()の戻り値がイテレーターです。
iterator.next()を実行する度に配列に格納されている値を取得しているのが分かります。
.next()で戻ってくる値はオブジェクトです。”value”は配列に格納されている値で、”done”は終端に到達したかの判定です。
While文とイテレーターの組み合わせ
> const fruits = ["apple", "banana", "orange"]
> let fruits_iterator = fruits.values()
> let fruit
> while(fruit = fruits_iterator.next()){
if(fruit.done){
break
}else{
console.log(fruit.value)
}
}
//コンソールログ
apple
banana
orange

