JavaScript - 文字列を1文字ずつ分割して配列に格納
JavaScriptで文字列を1文字ずつ配列に入れたい場合、 いくつか方法があります。
ES2015以降のやり方で一番確実なのは、スプレッド演算子(...) を使う方法です。
この方法であればサロゲートペアの問題も解消されます。
スプレッド演算子を使う方法
スプレッド演算子(...)は展開演算子ともいい、 反復可能なオブジェクトを、配列リテラルや関数の引数リストの中で展開します。まずはスプレッド演算子を使って、文字列を1文字ずつ配列に入れる方法を紹介します。
var str = 'abcde';
var arr = [...str];
console.log(arr); // (5) ["a", "b", "c", "d", "e"]
上のサンプルコードは変数strを使いましたが、 下のサンプルコードのように文字列リテラルに対して使用することもできます。
var arr = [...'abcde'];
console.log(arr); // (5) ["a", "b", "c", "d", "e"]
サロゲートペアも正しく分割できる
スプレッド演算子を使った方法だと、サロゲートペアの問題を気にせずに済みます。
例えば、「𩸽」(ほっけ)というサロゲートペアを含む文字列を分割してみます。
var arr = [...'𩸽を食べる'];
console.log(arr); // (5) ["𩸽", "を", "食", "べ", "る"]
このように、正しく1文字ずつ分割できています。
ES2015以降の環境が利用できる方はこの方法がおすすめです。