diff options
Diffstat (limited to 'files/uk/web/javascript/reference/global_objects/string/repeat')
-rw-r--r-- | files/uk/web/javascript/reference/global_objects/string/repeat/index.html | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/files/uk/web/javascript/reference/global_objects/string/repeat/index.html b/files/uk/web/javascript/reference/global_objects/string/repeat/index.html new file mode 100644 index 0000000000..101776ad15 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/string/repeat/index.html @@ -0,0 +1,119 @@ +--- +title: String.prototype.repeat() +slug: Web/JavaScript/Reference/Global_Objects/String/repeat +tags: + - ECMAScript 2015 + - JavaScript + - String + - метод + - рядок +translation_of: Web/JavaScript/Reference/Global_Objects/String/repeat +--- +<div>{{JSRef}}</div> + +<p>Метод <strong><code>repeat()</code></strong> створює та повертає новий рядок, що містить вказану кількість об'єднаних разом копій рядка, на якому він був викликаний.</p> + +<div>{{EmbedInteractiveExample("pages/js/string-repeat.html","shorter")}}</div> + + + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>str</var>.repeat(<var>count</var>)</code> +</pre> + +<h3 id="Параметри">Параметри</h3> + +<dl> + <dt><code><var>count</var></code></dt> + <dd>Ціле число в діапазоні між <code>0</code> та {{jsxref("Global_Objects/Number/POSITIVE_INFINITY", "+Infinity")}}, що вказує кількість повторів рядка.</dd> +</dl> + +<h3 id="Значення_що_повертається">Значення, що повертається</h3> + +<p>Новий рядок, що містить вказану кількість копій наданого рядка.</p> + +<h3 id="Винятки">Винятки</h3> + +<ul> + <li>{{jsxref("Errors/Negative_repetition_count", "RangeError")}}: число повторів має бути невід'ємним.</li> + <li>{{jsxref("Errors/Resulting_string_too_large", "RangeError")}}: число повторів має бути меншим за нескінченість та не перевищувати максимальний розмір рядка.</li> +</ul> + +<h2 id="Приклади">Приклади</h2> + +<pre class="brush: js">'абв'.repeat(-1) // RangeError +'абв'.repeat(0) // '' +'абв'.repeat(1) // 'абв' +'абв'.repeat(2) // 'абвабв' +'абв'.repeat(3.5) // 'абвабвабв' (count буде перетворений на ціле число) +'абв'.repeat(1/0) // RangeError + +({ toString: () => 'абв', repeat: String.prototype.repeat }).repeat(2) +// 'абвабв' (repeat() є загальним методом) +</pre> + +<h2 id="Поліфіл">Поліфіл</h2> + +<p>Цей метод був доданий у специфікацію ECMAScript 2015 та може поки не бути доступним в усіх реалізаціях JavaScript. Однак, ви можете створити поліфіл <code>String.prototype.repeat()</code> за допомогою наступного коду:</p> + +<pre class="brush: js" dir="rtl">if (!String.prototype.repeat) { + String.prototype.repeat = function(count) { + 'use strict'; + if (this == null) + throw new TypeError('неможливо перетворити ' + this + ' на об\'єкт'); + + var str = '' + this; + // Щоб перетворити рядок на ціле число. + count = +count; + // Перевірка на NaN + if (count != count) + count = 0; + + if (count < 0) + throw new RangeError('repeat count must be non-negative'); + + if (count == Infinity) + throw new RangeError('repeat count must be less than infinity'); + + count = Math.floor(count); + if (str.length == 0 || count == 0) + return ''; + + // Гарантія того, що count є цілим 31-бітним числом, дозволяє значно оптимізувати + // головну частину. Але, все ж, найновіші (серпень 2014) переглядачі не можуть + // впоратись з рядками з 1 << 28 символів чи довше, а отже: + if (str.length * count >= 1 << 28) + throw new RangeError('repeat count must not overflow maximum string size'); + + var maxCount = str.length * count; + count = Math.floor(Math.log(count) / Math.log(2)); + while (count) { + str += str; + count--; + } + str += str.substring(0, maxCount - str.length); + return str; + } +}</pre> + +<h2 id="Специфікації">Специфікації</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Специфікація</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-string.prototype.repeat', 'String.prototype.repeat')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("javascript.builtins.String.repeat")}}</p> |