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