JavaScript/String/prototype/Symbol.iterator

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

構文

編集
str[Symbol.iterator]()
  • str: 反復処理の対象となる文字列。

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

編集

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

const str = "Hello";
for (const char of str) {
  console.log(char);
}
// "H"
// "e"
// "l"
// "o"

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

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

編集

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

const str = "Hello";
const iterator = str[Symbol.iterator]();

console.log(iterator.next().value); // "H"
console.log(iterator.next().value); // "e"
console.log(iterator.next().value); // "l"
console.log(iterator.next().value); // "o"
console.log(iterator.next().done);  // true

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

注意点

編集
  • Unicode: イテレータは Unicode コードポイントごとに値を返します。サロゲートペアは1つの文字として扱われます。
  • 分解可能な文字: 結合文字は個別に反復処理されます(例: アクセント記号は別の文字として扱われます)。
  • スプレッド構文: スプレッド構文 (...) は内部的にイテレータを使用するため、文字列を文字の配列に変換できます(例: [...str])。
  • 関連メソッド: Array.from() も文字列を文字の配列に変換するために使用できます。

脚註

編集
  1. ^ これは、文字列の各文字を順番に取得するために使用されます。

外部リンク

編集