ユーザ用ツール

サイト用ツール


ecmascript:iteration

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


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 } を返す。

サンプル

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.1757340386.txt.gz · 最終更新: by nullpon