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