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 6 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 (;;) { if ((count & 1) == 1) rpt += str; count >>>= 1; if (count == 0) break; str += 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 2017 Draft (ECMA-262) La définition de 'String.prototype.repeat' dans cette spécification. |
Projet |
Compatibilité des navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Support simple | 41 | 24 (24) | Pas de support | Pas de support | 9 |
Fonctionnalité | Android | Chrome pour Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | Pas de support | 36 | 24.0 (24) | Pas de support | Pas de support | Pas de support |