Array.prototype.toLocaleString()

This translation is incomplete. Please help translate this article from English

El método toLocaleString() devuelve una cadena de texto representando los elementos del array. Los elementos son convertidos a texto usando su método toLocaleString  y dichos Strings son separados por un caracter específico para la localidad (como una coma para la separación de decimales “,”).

Sintaxis

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

Parámetros

locales Optional
Una cadena de texto con una etiqueta de idioma BCP 47, o un array de dichos strings. Para la forma general e interpretación the los argumentos locales, ver la página Intl.
options Optional
Un objeto con las configuraciones, para números ver Number.prototype.toLocaleString(), y para fechas ver Date.prototype.toLocaleString().

Valor de retorno

Una cadena de texto representando los elementos del array.

Ejemplos

Usando locales y options

Los elementos del array son convertidos a strings usando sus métodos toLocaleString.

Siempre mostrar la moneda para los strings y números en el array precios:

var precios = ['$7', 500, 8123, 12]; 
precios.toLocaleString('es-AR', { style: 'currency', currency: 'ARS' });

// "$7, $500, $8.123, $12"

Para más ejemplos, ver también Intl, NumberFormat, y 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;
    }
  });
}

Si necesitas soportar motores de JavaScript obsoletos que no compatibilizan con Object.defineProperty, es mejor no utilizar los métodos Array.prototype, ya que no se pueden hacer no-enumerables.

Especificaciones

Especificación Estado Comentario
ECMAScript (ECMA-262)
La definición de 'Array.prototype.toLocaleString' en esta especificación.
Living Standard La definicion original fue en ECMAScript 3.
ECMAScript Internationalization API (ECMA-402)
La definición de 'Array.prototype.toLocaleString' en esta especificación.
Living Standard Esta definición reemplaza la proporcionada en ECMA-262.

Compatibilidad con navegadores

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome para AndroidFirefox para AndroidOpera para AndroidSafari en iOSSamsung InternetNode.js
toLocaleStringChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 5.5Opera Soporte completo 4Safari Soporte completo 1WebView Android Soporte completo ≤37Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
Optional locales parameterChrome Soporte completo 24Edge Soporte completo 79Firefox Soporte completo 52IE Sin soporte NoOpera Soporte completo 15Safari Soporte completo 6.1WebView Android Soporte completo ≤37Chrome Android Soporte completo 25Firefox Android Sin soporte NoOpera Android Soporte completo 14Safari iOS Soporte completo 6.1Samsung Internet Android Soporte completo 2.0nodejs Soporte completo 13.0.0
Soporte completo 13.0.0
Soporte parcial 0.12
Notas
Notas 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 Soporte completo 24Edge Soporte completo 79Firefox Soporte completo 52IE Sin soporte NoOpera Soporte completo 15Safari Soporte completo 6.1WebView Android Soporte completo ≤37Chrome Android Soporte completo 25Firefox Android Sin soporte NoOpera Android Soporte completo 14Safari iOS Soporte completo 6.1Samsung Internet Android Soporte completo 2.0nodejs Soporte completo 0.12

Leyenda

Soporte completo  
Soporte completo
Sin soporte  
Sin soporte
Ver notas de implementación.
Ver notas de implementación.

Ver también