Метод repeat() конструирует и возвращает новую строку, содержащую указанное количество соединённых вместе копий строки, на которой он был вызван.

Синтаксис

str.repeat(count)

Параметры

count
Целое число от 0 до +∞: [0, +∞), определяющее число повторений строки во вновь создаваемой и возвращаемой строке.

Возвращаемое значение

Новая строка, содержащая указанное количество копий строки, для которой был вызван метод.

Исключения

  • RangeError: число повторений не должно быть отрицательным.
  • RangeError: число повторений должно быть меньше бесконечности и не должно превышать максимально допустимую длину строки.

Примеры

'абв'.repeat(-1);   // RangeError
'абв'.repeat(0);    // ''
'абв'.repeat(1);    // 'абв'
'абв'.repeat(2);    // 'абвабв'
'абв'.repeat(3.5);  // 'абвабвабв' (количество будет преобразовано в целое число)
'абв'.repeat(1/0);  // RangeError

({ toString: () => 'абв', repeat: String.prototype.repeat }).repeat(2);
// 'абвабв' (метод repeat() является обобщённым методом)

Полифилл

Этот метод был добавлен к спецификации ECMAScript 2015 и может быть доступен ещё не во всех реализациях JavaScript. Однако, вы можете легко эмулировать этот метод при помощи следующего кода:

if (!String.prototype.repeat) {
  String.prototype.repeat = function(count) {
    'use strict';
    if (this == null) {
      throw new TypeError('can\'t convert ' + this + ' to object');
    }
    var str = '' + this;
    count = +count;
    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 rpt = '';
    for (var i = 0; i < count; i++) {
      rpt += str;
    }
    return rpt;
  }
}

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

Спецификация Статус Комментарии
ECMAScript 2015 (6th Edition, ECMA-262)
Определение 'String.prototype.repeat' в этой спецификации.
Стандарт Изначальное определение.
ECMAScript Latest Draft (ECMA-262)
Определение 'String.prototype.repeat' в этой спецификации.
Черновик  

Совместимость с браузерами

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidEdge MobileFirefox для AndroidOpera для AndroidiOS SafariSamsung InternetNode.js
Базовая поддержкаChrome Полная поддержка 41Edge Полная поддержка ДаFirefox Полная поддержка 24IE Нет поддержки НетOpera Полная поддержка ДаSafari Полная поддержка 9WebView Android Нет поддержки НетChrome Android Полная поддержка 36Edge Mobile Полная поддержка ДаFirefox Android Полная поддержка 24Opera Android Полная поддержка ДаSafari iOS Полная поддержка 9Samsung Internet Android Полная поддержка Даnodejs Полная поддержка 4.0.0
Полная поддержка 4.0.0
Полная поддержка 0.12
Отключено
Отключено From version 0.12: this feature is behind the --harmony runtime flag.

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Пользователь должен сам включить эту возможность.
Пользователь должен сам включить эту возможность.

Метки документа и участники

Внесли вклад в эту страницу: KTatyana, Mingun, dtretyakov
Обновлялась последний раз: KTatyana,