イテレータとは?

アイキャチ画像
2022/09/09
2022/09/09
a77FJJXp

今回は最近独学していて発見した『イテレータ』という概念について紹介します。概念的要素が強いのでできるかぎり簡単にまとめてみました。

イテレータ

イテレータとは以下の特徴を持つオブジェクトのことです。

  1. next()メソッドを持っている
  2. next()メソッドを使うとイテレータリザルトを返す
  3. 反復処理を実行する時便利に使える

イテレータリザルト

イテレータリザルトとはイテレータでnext()メソッドを利用した際に返り値として返ってくるオブジェクトです。

このオブジェクトには以下の特徴があります。

  1. valueプロパティがある
  2. doneプロパティがある

では実際にどんなオブジェクトか具体例を見てみましょう。

{ value: 値, done: false }

それぞれのプロパティの役割

valueプロパティ
  • イテレータから取り出した値がはいってます
doneプロパティ
  • 値を取り出し終えたかを真偽値で表現
  • 値を全て取り出し終わるとtrue
  • 値がまだある場合はfalse

イテラブル

イテレータをもつオブジェクトのことをイテラブルなオブジェクトと呼びます。

イテラブルなオブジェクトからイテレータを取得するには[Symbol.iterator]()メソッドを利用します。

実際の動き

JavaScriptを例にあげます。

JavaScriptの場合だと文字列と配列がイテラブルなので、今回は配列をもとに動き方を確認してみましょう。

// 配列
const arr = [0,1,2];

// イテレータを取得
const arr2 = arr[Symbol.iterator]();

// next()メソッドをしない場合、そのままイテレータを出力する
console.log(arr2);

// next()メソッドでイテレータリザルトを取得
console.log(arr2.next());
console.log(arr2.next());
console.log(arr2.next());
console.log(arr2.next());

// コンソールの出力結果
> {}
> { "value": 0 ,"done": false }
> { "value": 1 ,"done": false }
> { "value": 2 ,"done": false }
> { "done": true }