Array.prototype.toLocaleString()

Die Methode toLocaleString() gibt als Rückgabewert einen String zurück, welcher die Elemente des Arrays darstellt. Die Array-Elemente werden mittels ihrer toLocaleString Methode in Strings umgewandelt und durch einen sprachspezifischen String (wie zum Beispiel ein Kommazeichen “,”) separiert.

Syntax

arr.toLocaleString([locales [, options]]);

Parameter

locales Optional
Ein String mit einem Language-Tag nach BCP 47 oder ein Array solcher Strings. Für die allgemeine Art und Interpretation des locales Parameters, siehe Seite Intl.
options Optional
Ein Objekt mit konfigurierbaren Eigenschaften, für Numbers siehe Number.prototype.toLocaleString(), und für Datumsangaben siehe Date.prototype.toLocaleString().

Rückgabewert

Ein einzelner String der die Elemente des Arrays darstellt.

Beispiele

Verwendung von locales und options

Die Elemente des Arrays werden mittels der toLocaleString Methode in einen String umgewandelt.

Jedem Strings und Numbers Element im Array prices die Währung zuordnen:

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

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

Für weitere Beispiele, siehe auch Intl, NumberFormat und DateTimeFormat.

Polyfill

// https://tc39.github.io/ecma402/#sup-array.prototype.tolocalestring
if (!Array.prototype.toLocaleString) {
  Object.defineProperty(Array.prototype, 'toLocaleString', {
    value: function(locales, options) {
      // 1. Let O be ? ToObject(this value).
      if (this == null) {
        throw new TypeError('"this" is null or not defined');
      }

      var a = Object(this);

      // 2. Let len be ? ToLength(? Get(A, "length")).
      var len = a.length >>> 0;

      // 3. Let separator be the String value for the 
      //    list-separator String appropriate for the 
      //    host environment's current locale (this is 
      //    derived in an implementation-defined way).
      // NOTE: In this case, we will use a comma
      var separator = ',';

      // 4. If len is zero, return the empty String.
      if (len === 0) {
        return '';
      }

      // 5. Let firstElement be ? Get(A, "0").
      var firstElement = a[0];
      // 6. If firstElement is undefined or null, then
      //  a.Let R be the empty String.
      // 7. Else,
      //  a. Let R be ? 
      //     ToString(? 
      //       Invoke(
      //        firstElement, 
      //        "toLocaleString", 
      //        « locales, options »
      //       )
      //     )
      var r = firstElement == null ? 
        '' : firstElement.toLocaleString(locales, options);

      // 8. Let k be 1.
      var k = 1;

      // 9. Repeat, while k < len
      while (k < len) {
        // a. Let S be a String value produced by 
        //   concatenating R and separator.
        var s = r + separator;

        // b. Let nextElement be ? Get(A, ToString(k)).
        var nextElement = a[k];

        // c. If nextElement is undefined or null, then
        //   i. Let R be the empty String.
        // d. Else,
        //   i. Let R be ? 
        //     ToString(? 
        //       Invoke(
        //        nextElement, 
        //        "toLocaleString", 
        //        « locales, options »
        //       )
        //     )
        r = nextElement == null ? 
          '' : nextElement.toLocaleString(locales, options);

        // e. Let R be a String value produced by 
        //   concatenating S and R.
        r = s + r;

        // f. Increase k by 1.
        k++;
      }

      // 10. Return R.
      return r;
    }
  });
}

Für die Unterstützung von veralteten JavaScript Engines, die Object.defineProperty nicht kennen, sollte kein Polyfill für Array.prototype Methoden eingesetzt werden, da sie auf diese Weise nicht mehr nicht-durchzählbar gemacht werden können.

Spezifikationen

Spezifikation Status Kommentar
ECMAScript (ECMA-262)
Die Definition von 'Array.prototype.toLocaleString' in dieser Spezifikation.
Lebender Standard Initiale Definition war in ECMAScript 3.
ECMAScript Internationalization API (ECMA-402)
Die Definition von 'Array.prototype.toLocaleString' in dieser Spezifikation.
Lebender Standard Diese Definition ersetzt die Definition aus ECMA-262.

Browserkompatibilität

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid WebviewChrome für AndroidFirefox für AndroidOpera für AndroidSafari auf iOSSamsung InternetNode.js
toLocaleStringChrome Vollständige Unterstützung 1Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 1IE Vollständige Unterstützung 5.5Opera Vollständige Unterstützung 4Safari Vollständige Unterstützung 1WebView Android Vollständige Unterstützung ≤37Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 4Opera Android Vollständige Unterstützung 10.1Safari iOS Vollständige Unterstützung 1Samsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung 0.1.100
Optional locales parameterChrome Vollständige Unterstützung 24Edge Vollständige Unterstützung 79Firefox Vollständige Unterstützung 52IE Keine Unterstützung NeinOpera Vollständige Unterstützung 15Safari Vollständige Unterstützung 6.1WebView Android Vollständige Unterstützung ≤37Chrome Android Vollständige Unterstützung 25Firefox Android Keine Unterstützung NeinOpera Android Vollständige Unterstützung 14Safari iOS Vollständige Unterstützung 6.1Samsung Internet Android Vollständige Unterstützung 2.0nodejs Vollständige Unterstützung 13.0.0
Vollständige Unterstützung 13.0.0
Teilweise Unterstützung 0.12
Hinweise
Hinweise Before version 13.0.0, only the locale data for en-US is available by default. When other locales are specified, the function silently falls back to en-US. To make full ICU (locale) data available for versions prior to 13, see Node.js documentation on the --with-intl option and how to provide the data.
Optional options parameterChrome Vollständige Unterstützung 24Edge Vollständige Unterstützung 79Firefox Vollständige Unterstützung 52IE Keine Unterstützung NeinOpera Vollständige Unterstützung 15Safari Vollständige Unterstützung 6.1WebView Android Vollständige Unterstützung ≤37Chrome Android Vollständige Unterstützung 25Firefox Android Keine Unterstützung NeinOpera Android Vollständige Unterstützung 14Safari iOS Vollständige Unterstützung 6.1Samsung Internet Android Vollständige Unterstützung 2.0nodejs Vollständige Unterstützung 0.12

Legende

Vollständige Unterstützung  
Vollständige Unterstützung
Keine Unterstützung  
Keine Unterstützung
Siehe Implementierungshinweise.
Siehe Implementierungshinweise.

Siehe auch