--- title: Array.prototype.toLocaleString() slug: Web/JavaScript/Reference/Global_Objects/Array/toLocaleString tags: - Array - JavaScript - Масив - метод translation_of: Web/JavaScript/Reference/Global_Objects/Array/toLocaleString ---
{{JSRef}}

Метод toLocaleString() повертає рядок, що відображає елементи масиву. Елементи перетворюються у рядки, використовуючи свої методи toLocaleString, і ці рядки розділяються символами, що відповідають локалі (наприклад, комою “,”).

{{EmbedInteractiveExample("pages/js/array-tolocalestring.html")}}

Синтаксис

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

Параметри

locales {{optional_inline}}
Рядок з міткою мови BCP 47 або масив таких рядків. Щодо загального вигляду та інтерпретації аргументу locales дивіться  {{jsxref("Intl")}}.
options {{optional_inline}}
Об'єкт з властивостями конфігурації, для числових значень дивіться {{jsxref("Number.prototype.toLocaleString()")}}, а для дат {{jsxref("Date.prototype.toLocaleString()")}}.

Значення, що повертається

Текстовий рядок, що відображає елементи масиву.

Приклади

Використання locales та options

Елементи масиву перетворюються на рядки, використовуючи свої методи toLocaleString.

Завжди відображати знак валюти для рядків та чисел у масиві prices:

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

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

Більше прикладів дивіться на сторінках {{jsxref("Intl")}}, {{jsxref("NumberFormat")}} та {{jsxref("DateTimeFormat")}}.

Поліфіл

// https://tc39.github.io/ecma402/#sup-array.prototype.tolocalestring
if (!Array.prototype.toLocaleString) {
  Object.defineProperty(Array.prototype, 'toLocaleString', {
    value: function(locales, options) {
      // 1. Нехай O дорівнює ? ToObject(this value).
      if (this == null) {
        throw new TypeError('"this" is null or not defined');
      }

      var a = Object(this);

      // 2. Нехай len дорівнює ? ToLength(? Get(A, "length")).
      var len = a.length >>> 0;

      // 3. Нехай separator дорівнює рядковому значенню
      //    роздільника елементів списку згідно поточної
      //    локалі середовища виконання (це значення
      //    визначається реалізацією).
      // ЗАУВАГА: В даному випадку ми використовуємо кому
      var separator = ',';

      // 4. Якщо len дорівнює нулю, повернути порожінй рядок.
      if (len === 0) {
        return '';
      }

      // 5. Нехай firstElement дорівнює ? Get(A, "0").
      var firstElement = a[0];
      // 6. Якщо firstElement дорівнює undefined або null, тоді
      //  a. Нехай R дорівнює порожньому рядку.
      // 7. Інакше,
      //  a. Нехай R дорівнює ?
      //     ToString(?
      //       Invoke(
      //        firstElement,
      //        "toLocaleString",
      //        « locales, options »
      //       )
      //     )
      var r = firstElement == null ?
        '' : firstElement.toLocaleString(locales, options);

      // 8. Нехай k дорівнює 1.
      var k = 1;

      // 9. Повторювати, доки k < len
      while (k < len) {
        // а. Нехай S дорівнює рядковому значенню, утвореному
        //   об'єднанням R та separator.
        var s = r + separator;

        // б. Нехай nextElement дорівнює ? Get(A, ToString(k)).
        var nextElement = a[k];

        // в. Якщо nextElement дорівнює undefined або null, тоді
        //   i. Нехай R дорівнє порожньому рядку.
        // г. Інакше,
        //   i. Нехай R дорівнює ?
        //     ToString(?
        //       Invoke(
        //        nextElement,
        //        "toLocaleString",
        //        « locales, options »
        //       )
        //     )
        r = nextElement == null ?
          '' : nextElement.toLocaleString(locales, options);

        // ґ. Нехай R дорівнює рядковому значенню, утвореному
        //   об'єднанням S та R.
        r = s + r;

        // д. Збільшити k на 1.
        k++;
      }

      // 10. Повернути R.
      return r;
    }
  });
}

Якщо вам потрібно підтримувати зовсім застарілі рушії JavaScript, які не підтримують Object.defineProperty, краще взагалі не використовувати поліфіли методів Array.prototype, оскільки ви не зможете зробити їх не перелічуваними.

Специфікації

Специфікація Статус Коментар
{{SpecName('ESDraft', '#sec-array.prototype.tolocalestring', 'Array.prototype.toLocaleString')}} {{Spec2('ESDraft')}} Початкове визначення було надане у ECMAScript 3.
{{SpecName('ES Int Draft', '#sup-array.prototype.tolocalestring', 'Array.prototype.toLocaleString')}} {{Spec2('ES Int Draft')}} Це визначення замінює визначення, надане у ECMA-262.

Сумісність з веб-переглядачами

{{Compat("javascript.builtins.Array.toLocaleString")}}

Див. також