Array.prototype.toLocaleString()
================================

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 ",").

Pruébalo
--------

Sintaxis
--------
```

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

### Parámetros

`locales` Opcional

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` Opcional

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`.

* `Object`: `Object.prototype.toLocaleString()`
* `Number`: `Number.prototype.toLocaleString()`
* `Date`: `Date.prototype.toLocaleString()`

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


```js
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` (en-US), y `DateTimeFormat` (en-US).

Polyfill
--------


```js
// 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
----------------

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

Compatibilidad con navegadores
------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Ver también
-----------

* `Array.prototype.toString()`
* `Intl`
* `Object.prototype.toLocaleString()`
* `Number.prototype.toLocaleString()`
* `Date.prototype.toLocaleString()`