Array.prototype.toLocaleString()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2017.

toLocaleString()Array インスタンスのメソッドで、配列の要素を表す文字列を返します。配列の要素は、それぞれの toLocaleString メソッドを使い、ロケール固有の文字列に変換されます(例えばカンマ "," など)。

試してみましょう

構文

js
toLocaleString()
toLocaleString(locales)
toLocaleString(locales, options)

引数

locales 省略可

BCP 47 言語タグの文字列か、その配列です。locales 引数の一般的な形式と解釈については、Intl メインページの引数の説明を参照してください。

options 省略可

設定プロパティのオブジェクトです。数値に関しては Number.prototype.toLocaleString() を、日付に関しては Date.prototype.toLocaleString() を見てください。

返値

配列の要素を表す文字列です。

解説

Array.prototype.toLocaleString メソッドは、その内容を走査し、すべての要素に対して toLocaleString メソッドを、引数 localesoptions を指定して呼び出し、実装で定義された区切り文字 (",") でその結果を連結したものを返します。このメソッド自身は、この 2 つの引数を使用せず、各要素に対する toLocaleString() の呼び出しで渡すだけであることに注意してください。区切り文字列の選択はホストの現在のロケールに依存し、 locales 引数は使用しません。

要素が undefinednull の場合、文字列 "null" または "undefined" の代わりに空文字列に変換されます。

疎配列で使用する場合、toLocaleString() メソッドは空のスロットを undefined という値があるかのように反復処理します。

toLocaleString() メソッドは汎用的です。このメソッドは this 値に length プロパティと整数キーのプロパティがあることだけを期待します。

locales と options の使用

配列の要素は、その toLocaleString メソッドを使用して文字列に変換されます。

prices 配列内の文字列と数値の通貨を常に表示します。

js
const prices = ["¥7", 500, 8123, 12];
prices.toLocaleString("ja-JP", { style: "currency", currency: "JPY" });

// "¥7,¥500,¥8,123,¥12"

それ以外の例については、 Intl.NumberFormatIntl.DateTimeFormat のページを参照してください。

疎配列に対する toLocaleString() の使用

toLocaleString() は空のスロットを undefined と同じように扱い、区切り文字を追加します。

js
console.log([1, , 3].toLocaleString()); // '1,,3'

配列以外のオブジェクトに対する toLocaleString() の呼び出し

toLocaleString() メソッドは thislength プロパティを読み込み、そのキーが length よりも小さい非負の整数である各プロパティにアクセスします。

js
const arrayLike = {
  length: 3,
  0: 1,
  1: 2,
  2: 3,
  3: 4, // length が 3 であるため toLocaleString() からは無視される
};
console.log(Array.prototype.toLocaleString.call(arrayLike));
// 1,2,3

仕様書

Specification
ECMAScript Language Specification
# sec-array.prototype.tolocalestring
ECMAScript Internationalization API Specification
# sup-array.prototype.tolocalestring

ブラウザーの互換性

BCD tables only load in the browser

関連情報