aboutsummaryrefslogtreecommitdiff
path: root/files/uk/web/javascript/reference/global_objects/array/tolocalestring/index.html
blob: 75448b5e7284272fc9f33a6b27c732ffbbc19a92 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
---
title: Array.prototype.toLocaleString()
slug: Web/JavaScript/Reference/Global_Objects/Array/toLocaleString
tags:
  - Array
  - JavaScript
  - Масив
  - метод
translation_of: Web/JavaScript/Reference/Global_Objects/Array/toLocaleString
---
<div>{{JSRef}}</div>

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

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

<h2 id="Синтаксис">Синтаксис</h2>

<pre class="syntaxbox"><var>arr</var>.toLocaleString([<var>locales[</var>, <var>options]]</var>);
</pre>

<h3 id="Параметри">Параметри</h3>

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

<h3 id="Значення_що_повертається">Значення, що повертається</h3>

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

<h2 id="Приклади">Приклади</h2>

<h3 id="Використання_locales_та_options">Використання <code>locales</code> та <code>options</code></h3>

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

<ul>
 <li><code>Object</code>: {{jsxref("Object.prototype.toLocaleString()")}}</li>
 <li><code>Number</code>: {{jsxref("Number.prototype.toLocaleString()")}}</li>
 <li><code>Date</code>: {{jsxref("Date.prototype.toLocaleString()")}}</li>
</ul>

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

<pre class="brush: js">var prices = ['¥7', 500, 8123, 12];
prices.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' });

// "¥7,¥500,¥8,123,¥12"
</pre>

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

<h2 id="Поліфіл">Поліфіл</h2>

<pre class="brush: js">// 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 &gt;&gt;&gt; 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 &lt; len
      while (k &lt; 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;
    }
  });
}
</pre>

<p>Якщо вам потрібно підтримувати зовсім застарілі рушії JavaScript, які не підтримують <code><a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty">Object.defineProperty</a></code>, краще взагалі не використовувати поліфіли методів <code>Array.prototype</code>, оскільки ви не зможете зробити їх не перелічуваними.</p>

<h2 id="Специфікації">Специфікації</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Специфікація</th>
   <th scope="col">Статус</th>
   <th scope="col">Коментар</th>
  </tr>
  <tr>
   <td>{{SpecName('ESDraft', '#sec-array.prototype.tolocalestring', 'Array.prototype.toLocaleString')}}</td>
   <td>{{Spec2('ESDraft')}}</td>
   <td>Початкове визначення було надане у ECMAScript 3.</td>
  </tr>
  <tr>
   <td>{{SpecName('ES Int Draft', '#sup-array.prototype.tolocalestring', 'Array.prototype.toLocaleString')}}</td>
   <td>{{Spec2('ES Int Draft')}}</td>
   <td>Це визначення замінює визначення, надане у ECMA-262.</td>
  </tr>
 </tbody>
</table>

<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2>

<div>


<p>{{Compat("javascript.builtins.Array.toLocaleString")}}</p>
</div>

<h2 id="Див._також">Див. також</h2>

<ul>
 <li>{{jsxref("Array.prototype.toString()")}}</li>
 <li>{{jsxref("Intl")}}</li>
 <li>{{jsxref("Object.prototype.toLocaleString()")}}</li>
 <li>{{jsxref("Number.prototype.toLocaleString()")}}</li>
 <li>{{jsxref("Date.prototype.toLocaleString()")}}</li>
</ul>