De nos jours, la repeat
méthode des chaînes est implémentée presque partout. (Ce n'est pas dans Internet Explorer .) Donc, sauf si vous devez prendre en charge des navigateurs plus anciens, vous pouvez simplement écrire:
"a".repeat(10)
Avant repeat
, nous utilisions ce hack:
Array(11).join("a") // create string with 10 a's: "aaaaaaaaaa"
(Notez qu'un tableau de longueur 11 ne vous donne que 10 "a", car Array.join
place l'argument entre les éléments du tableau.)
Simon souligne également que selon ce jsperf , il semble qu'il soit plus rapide dans Safari et Chrome (mais pas Firefox) de répéter plusieurs fois un caractère en ajoutant simplement en utilisant une boucle for (bien qu'un peu moins concise).
Jason Orendorff
la source
Array(rawValue.length + 1).join("*")
Array(n+1).join("a")
. Lorsque n = 0, cela renvoie la chaîne vide, et lorsque n = 1, il renvoie"a"
. Je pense donc que cela fonctionne dans tous les cas.Dans une nouvelle harmonie ES6, vous aurez une manière native de le faire avec la répétition . Également ES6 en ce moment uniquement expérimental, cette fonctionnalité est déjà disponible dans Edge, FF, Chrome et Safari
Et sûrement si la fonction de répétition n'est pas disponible, vous pouvez utiliser old-good
Array(n + 1).join("abc")
la source
Pratique si vous vous répétez beaucoup:
la source
repeat(str, n)
.n= n || 1
pièce (ou vérifierais si ellen
n'est pas définie), vous pouvez donc également répéter les0
tempsString.repeat
été ajouté uniquement dans ES6, qui n'a été finalisé qu'en juin 2015. Je pense donc que mon argument était valable lorsque je l'ai écrit en 2012. :)La manière la plus performante est https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat
La version courte est ci-dessous.
Polyfill de Mozilla:
la source
count >>>= 1, pattern += pattern;
? quel genre de déclaration est-ce?if (!String.prototype.repeat) {
au début et}
à la fin.Une alternative est:
Si vous devez répéter plusieurs caractères, multipliez votre conditionnel:
REMARQUE: vous n'avez pas besoin de dépasser de 1 comme avec
word = Array(11).join('a')
la source
Si vous n'êtes pas opposé à l'inclusion d'une bibliothèque dans votre projet, lodash a une fonction de répétition.
https://lodash.com/docs#repeat
la source
Pour tous les navigateurs
La fonction suivante fonctionnera beaucoup plus rapidement que l'option suggérée dans la réponse acceptée:
Vous l'utiliseriez comme ceci:
Pour comparer les performances de cette fonction avec celles de l'option proposée dans la réponse acceptée, voir ce violon et ce violon pour les repères.
Pour les navigateurs modernes uniquement
Dans les navigateurs modernes, vous pouvez désormais le faire en utilisant la
String.prototype.repeat
méthode:En savoir plus sur cette méthode sur MDN .
Cette option est encore plus rapide. Malheureusement, cela ne fonctionne dans aucune version d'Internet Explorer. Les chiffres du tableau spécifient la première version du navigateur qui prend entièrement en charge la méthode:
la source
Bien que la réponse la plus votée soit un peu plus compacte, avec cette approche, vous n'avez pas besoin d'ajouter un élément de tableau supplémentaire.
la source
fill()
si vous faites de même avecjoin("a")
seul ...la source
Dans ES2015 / ES6, vous pouvez utiliser
"*".repeat(n)
Ajoutez donc ceci à vos projets, et vous êtes prêt à partir.
la source
Une autre façon intéressante de répéter rapidement le caractère n est d'utiliser l'idée de l'algorithme d'exponentiation rapide:
la source
Pour répéter une valeur dans mes projets j'utilise répéter
Par exemple:
mais soyez prudent car cette méthode a été ajoutée à la spécification ECMAScript 6.
la source
la source
Voici ce que j'utilise:
la source
Je vais développer la réponse de @ bonbon . Sa méthode est un moyen simple "d'ajouter N caractères à une chaîne existante", juste au cas où quelqu'un aurait besoin de le faire. Par exemple, car "un google" est un 1 suivi de 100 zéros .
REMARQUE: vous devez ajouter la longueur de la chaîne d'origine au conditionnel.
la source
Lodash offre une fonctionnalité similaire à la fonction Javascript repeat () qui n'est pas disponible dans tous les navigateurs. Il s'appelle _.repeat et est disponible depuis la version 3.0.0:
la source
la source
Peut également être utilisé comme doublure:
la source
Dans CoffeeScript:
la source
c'est ainsi que vous pouvez appeler une fonction et obtenir le résultat à l'aide de Array () et join ()
la source
la source
String.prototype.repeat
qui est nativement inclus dans les navigateurs actuels. Aussi, pourquoi le minimiser? Vous n'avez pas besoin de tout écrire sur une seule ligne.Voici une version ES6
la source