Web/JavaScript/Reference/Global objects/String/repeat

From Get docs


The repeat() method constructs and returns a new string which contains the specified number of copies of the string on which it was called, concatenated together.


Syntax

str.repeat(count)

Parameters

count
An integer between 0 and +Infinity, indicating the number of times to repeat the string.

Return value

A new string containing the specified number of copies of the given string.

Exceptions

  • RangeError: repeat count must be non-negative.
  • RangeError: repeat count must be less than infinity and not overflow maximum string size.

Examples

Using repeat()

'abc'.repeat(-1)    // RangeError
'abc'.repeat(0)     // ''
'abc'.repeat(1)     // 'abc'
'abc'.repeat(2)     // 'abcabc'
'abc'.repeat(3.5)   // 'abcabcabc' (count will be converted to integer)
'abc'.repeat(1/0)   // RangeError

({ toString: () => 'abc', repeat: String.prototype.repeat }).repeat(2) 
// 'abcabc' (repeat() is a generic method)

Polyfill

This method has been added to the ECMAScript 2015 specification and may not be available in all JavaScript implementations yet. However, you can polyfill String.prototype.repeat() with the following snippet:

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;
    // To convert string to integer.
    count = +count;
    // Check 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 '';

    // Ensuring count is a 31-bit integer allows us to heavily optimize the
    // main part. But anyway, most current (August 2014) browsers can't handle
    // strings 1 << 28 chars or longer, so:
    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;
  }
}

Specifications

Specification
ECMAScript (ECMA-262)The definition of 'String.prototype.repeat' in that specification.

Browser compatibility

Update compatibility data on GitHub

Desktop Mobile Server
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet Node.js
repeat Chrome

Full support 41

Edge

Full support 12

Firefox

Full support 24

IE

No support No

Opera

Full support 28

Safari

Full support 9

WebView Android

No support No

Chrome Android

Full support 36

Firefox Android

Full support 24

Opera Android

Full support 28

Safari iOS

Full support 9

Samsung Internet Android

Full support 3.0

nodejs Full support 4.0.0


Full support 4.0.0


Full support 0.12

Disabled'

Disabled' From version 0.12: this feature is behind the --harmony runtime flag.

Legend

Full support  
Full support
No support  
No support
User must explicitly enable this feature.'
User must explicitly enable this feature.


See also