javascript Symbol.iteratorを使用して反復可能なオブジェクトや配列を取得する

javascript Symbol.iteratorを使用して反復可能なオブジェクトや配列を取得する

javascriptで、Symbol.iteratorを使用して反復可能なオブジェクトを取得するサンプルコードを記述してます。

環境

  • OS windows10 pro 64bit
  • Apache 2.4.43
  • ブラウザ chrome 102.0.5005.115

Symbol.iteratorの使い方

Symbol.iteratorを使用すると、反復可能である配列の値を取得することが可能です。

const array = ['a', 'b', 'c'];
const i = array[Symbol.iterator]();

console.log(i.next().value); // a
console.log(i.next().value); // b
console.log(i.next().value); // c

「.value」を除くと、doneが表示され、これは処理が終了しているかどうかの結果となります。

const array = ['a', 'b', 'c'];
const i = array[Symbol.iterator]();

console.log(i.next());
console.log(i.next());
console.log(i.next());
console.log(i.next());

実行結果

反復可能なオブジェクトも、作成することが可能です。

// オブジェクト
const obj = {
  [Symbol.iterator]() {
    let n = 5;
    let i = 0;

    const iterator = {
      next() {
        return { value: i++, done: i > n };
      },
    };

    return iterator;
  },
};

// 結果を確認
for (let item of obj) {
  console.log(item);
}

実行結果