toLocaleStringメソッド

広告

toLocaleStringメソッドは対象のArrayクラスのオブジェクトを文字列に変換した結果を返します。この時、現在のロケールに応じた形式で変換を行った結果を返します。

ロケールに応じたArrayクラスのオブジェクトの文字列表現を返します。

パラメータ:
  無し
戻り値:
  Arrayクラスのオブジェクトが表す数値のロケールに応じた文字列表現

Arrayクラスの文字列表現は、配列の各要素に格納されている値を文字列表現にしたものを連結したものなので、結局各要素に格納されている値をどのように文字列に変換するのかが重要です。

Arrayクラスのオブジェクトに対してtoStringメソッドを呼び出した場合は、各要素の値の文字列表現を取得するために要素の各値に対してtoStringメソッドが使われますが、Arrayクラスのオブジェクトに対してtoLocaleStringメソッドを呼び出した場合は、各要素の値の文字列表現を取得するために要素の各値に対してtoLocaleStringメソッドが使われます。格納されている値によってはtoStringメソッドとtoLocaleStringメソッドでは返す値が異なる場合があるため、結果的にArrayクラスに対するtoStringメソッドとtoLocaleStringメソッドでは返す値が異なる場合が出てきます。

次の例を見てください。

var ary = new Array(8500, 723, 1890);

var str1 = ary.toString();
var str2 = ary.toLocaleString();

配列の各要素には数値が格納されていますが、数値はtoStringメソッドとtoLocaleStringメソッドでは返す値が異なります。Arrayクラスのオブジェクトに対してtoStringメソッドを呼び出した場合は次の文字列が返されます。

8500,723,1890

それに対してArrayクラスのオブジェクトに対してtoLocaleStringメソッドを呼び出した場合は次の文字列が返されます。

8,500,723,1,890

数値の3桁毎の区切り文字がカンマのために分かりにくいですが、要素に格納されている値を"8,500"、"723"、"1,890"の3つの文字列に変換した後で、各文字列をカンマを区切り文字として連結した文字列が返されています。

サンプルコード

では簡単なサンプルで試してみます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>JavaScript テスト</title>
</head>
<body>

<script type="text/javascript" src="./js/script5_1.js">
</script>

</body>
</html>
function print(str){
  document.write(str + "<br />");
}

document.write("<p>");

var ary = new Array(8500, 723, 1890);
print(ary.toString());
print(ary.toLocaleString());

document.write("</p>");

上記を実際にブラウザ見てみると次のように表示されます。

p5-1

( Written by Tatsuo Ikura )