JavaScript/Array/prototype/Symbol.iterator

カテゴリ:Book:JavaScript#Array/prototype/Symbol.iterator%20

Array.prototype.@@iterator]() は、配列の各要素を反復処理するためのイテレータを返すメソッドです。このメソッドは、配列を for...of ループなどの反復処理構文で使用できるようにします[1]

構文

arr[Symbol.iterator]()
  • arr: 反復処理の対象となる配列。

for...of ループで配列を反復処理するプログラム

以下のプログラムは、for...of ループを使用して配列の各要素を反復処理します。

const arr = [1, 2, 3, 4, 5];
for (const element of arr) {
  console.log(element);
}
// 1
// 2
// 3
// 4
// 5

このプログラムでは、for...of ループを使用して配列 arr の各要素を反復処理しています。for...of ループは内部的に [[../@@iterator]|Array.prototype.@@iterator]()]] メソッドを使用しています。

イテレータを明示的に使用するプログラム

以下のプログラムは、Symbol.iterator を明示的に使用して配列のイテレータを取得します。

const arr = [1, 2, 3, 4, 5];
const iterator = arr[Symbol.iterator]();

console.log(iterator.next().value); // 1
console.log(iterator.next().value); // 2
console.log(iterator.next().value); // 3
console.log(iterator.next().value); // 4
console.log(iterator.next().value); // 5
console.log(iterator.next().done);  // true

このプログラムでは、arr[Symbol.iterator]() を使用して配列のイテレータを取得し、next() メソッドを呼び出して各要素を順番に取得しています。最後の要素を取得した後、next() の呼び出しは done: true を返します。

注意点

  • 欠落要素: 配列のイテレータは、欠落要素(空のスロット)に対して undefined を返します。
  • 値のみ: 配列のイテレータは、値のみを反復処理し、インデックスは提供しません。
  • スプレッド構文: スプレッド構文 (...) は内部的にイテレータを使用するため、配列のコピーを作成できます(例: [...arr])。
  • 関連メソッド: Array.prototype.entries()Array.prototype.keys()Array.prototype.values() は、さまざまな形式のイテレータを提供します。
  • デフォルト動作: Array.prototype[Symbol.iterator] は、Array.prototype.values と同じ関数オブジェクトを参照します。

脚註

  1. これは、配列の各要素を順番に取得するために使用されます。

外部リンク

カテゴリ:Book:JavaScript#Array/prototype/Symbol.iterator%20 カテゴリ:JavaScript
カテゴリ:Book:JavaScript カテゴリ:JavaScript カテゴリ:Pages using the JsonConfig extension