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以降の環境が利用できる方はこの方法がおすすめです。