【JSリファレンス】String.prototype[@@iterator]()
更新日:2024/06/14
String.prototype[@@iterator]()は、Stringオブジェクト(Stringコンストラクターのインスタンス)のプロトタイプチェーンに組み込まれるメソッドです。
@@iteratorは仕様上での表記です。
プログラムコードでは Symbol.iterator に置き換えられます。
[Symbol.iterator]が実装されているオブジェクトは、イテラブルなオブジェクトです。
String.prototype[Symbol.iterator]()は、現在の文字列の文字をコードポイント単位で順番に返すイテレーターを生成して返します。
このメソッドは、内部処理で呼び出されることを主な目的として実装されています。
■構文
String.prototype[Symbol.iterator]()
- なし
■使用例
▶for...of構文で使用
const text = "a🐈d";
for( const t of text ){
console.log( t );
}
// 結果
// a
// 🐈
// d
▶スプレッド構文で文字列を配列に変換
const text = "a🐈d";
const textArray = [...text];
console.log( textArray ); // [ 'a', '🐈', 'd' ]
■備考
文字列内のサロゲート文字は、長さ2として計算されます。
そのため、forループ等で一文字単位で文字を取得していくと、サロゲート文字が分割されます。
const text = "a🐈d";
console.log( text.length ); // 4
const textArray = [];
for( let i = 0 ; i < text.length ; i ++){
textArray.push( text[i] );
}
// 4文字の配列が生成される
console.log( textArray ); // [ 'a', '\ud83d', '\udc08', 'd' ]
イテレーターが適用される構文を使用することで、サロゲート文字を気にせずに文字単位で処理できます。
関連ページ
更新日:2024/06/14
スポンサーリンク
記事の内容について

こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://jsref.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。