ユーザ用ツール

サイト用ツール


ecmascript:iteration

文書の過去の版を表示しています。


<markdown> # Iteration Protocol

反復処理プロトコルは`for…of`構文で処理できるオブジェクトが実装しているべき約束事。反復可能プロトコル(Iterable Protocol)とイテレータプロトコル(Iterator Protocol)の2つで構成されている。

## 反復可能プロトコル

`[Symbol.iterator]`メソッドを実装していること。`[Symbol.iterator]`メソッドはイテレータプロトコルを実装したオブジェクトを返さなければならない。

## イテレータプロトコル

`next`メソッドを実装していること。`next`メソッドは

``` interface IteratorResult<T> {

done?: boolean;
value?: T;

} ```

を実装したオブジェクトを返す。valueは反復処理で取得される値。反復処理が全て終わった場合は `{ done: true }` を返す。

## サンプル

```javascript const iterator = {

count: 0,
next() {
  if (this.count < 5) {
    return { value: this.count++ };
  }
  return { done: true };
}

};

const iterable = {

[Symbol.iterator]() {
  return Object.create(iterator);
}

};

for (const num of iterable) {

console.log(num);  // => 0, 1, 2, 3, 4

}

console.log(Array.from(iterable)); ⇒ `[0,1,2,3,4]` ```

ecmascript/iteration.1757340314.txt.gz · 最終更新: by nullpon