La méthode repeat() construit et renvoie une nouvelle chaine de caractères qui contient le nombre de copie demandée de la chaine de caractères sur laquelle la méthode a été appelée, concaténées les unes aux autres.

Syntaxe

str.repeat(compte)

Paramètres

compte
Un nombre entier entre 0 and +∞ : [ 0, +∞[, indiquant le nombre de fois que la chaine de caractères doit être repétée dans la nouvelle chaine de caractères.

Valeur de retour

Une nouvelle chaîne de caractères composée du nombre indiqué de copies de la chaîne appelante.

Exceptions

  • RangeError : le nombre de répétition doit être positif.
  • RangeError : le nombre de répétition ne doit pas être infini et la taille de la chaîne résultante ne doit pas dépasser la taille maximale pour une chaîne de caractères.
RangeError
La compteur doit être positif et inférieur à l'infini.

Exemples

"abc".repeat(-1)     // RangeError
"abc".repeat(0)      // ""
"abc".repeat(1)      // "abc"
"abc".repeat(2)      // "abcabc"
"abc".repeat(3.5)    // "abcabcabc" (le compteur est converti en un nombre entier)
"abc".repeat(1/0)    // RangeError

({toString : () => "abc", repeat : String.prototype.repeat}).repeat(2)    
// "abcabc" (repeat() est une méthode générique)

Prothèse d'émulation (polyfill)

Cette méthode a été ajoutée dans la spécification ECMAScript 2015 et peut ne pas être disponible dans toutes les implémentations de JavaScript. Cependant, il est possible d'émuler le comportement de String.prototype.repeat() grâce au fragment de code suivant :

if (!String.prototype.repeat) {
  String.prototype.repeat = function (count) {
    "use strict";
    if (this == null)
      throw new TypeError("ne peut convertir " + this + " en objet");
    var str = "" + this;
    count = +count;
    if (count != count)
      count = 0;
    if (count < 0)
      throw new RangeError("le nombre de répétitions doit être positif");
    if (count == Infinity)
      throw new RangeError("le nombre de répétitions doit être inférieur à l'infini");
    count = Math.floor(count);
    if (str.length == 0 || count == 0)
      return "";
    // En vérifiant que la longueur résultant est un entier sur 31-bit
    // cela permet d'optimiser l'opération.
    // La plupart des navigateurs (août 2014) ne peuvent gérer des
    // chaînes de 1 << 28 caractères ou plus. Ainsi :
    if (str.length * count >= 1 << 28)
      throw new RangeError("le nombre de répétitions ne doit pas dépasser la taille de chaîne maximale");
    var rpt = "";
    for (var i = 0; i < count; i++) {
      rpt += str;
    }
    return rpt;
  }
}

Spécifications

Spécification État Commentaire
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'String.prototype.repeat' dans cette spécification.
Standard Première définition.
ECMAScript Latest Draft (ECMA-262)
La définition de 'String.prototype.repeat' dans cette spécification.
Projet  

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari pour iOSSamsung InternetNode.js
Support simpleChrome Support complet 41Edge Support complet OuiFirefox Support complet 24IE Aucun support NonOpera Support complet OuiSafari Support complet 9WebView Android Aucun support NonChrome Android Support complet 36Edge Mobile Support complet OuiFirefox Android Support complet 24Opera Android Support complet OuiSafari iOS Support complet 9Samsung Internet Android Support complet Ouinodejs Support complet 4.0.0
Support complet 4.0.0
Support complet 0.12
Désactivée
Désactivée From version 0.12: this feature is behind the --harmony runtime flag.

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight, ea1000, tregagnon
Dernière mise à jour par : SphinxKnight,