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()も文字列を文字の配列に変換するために使用できます。
脚註
編集- ^ これは、文字列の各文字を順番に取得するために使用されます。
外部リンク
編集