Heutzutage ist die repeat
String-Methode fast überall implementiert . (Es befindet sich nicht in Internet Explorer .) Wenn Sie also keine älteren Browser unterstützen müssen, können Sie einfach schreiben:
"a".repeat(10)
Vorher repeat
haben wir diesen Hack benutzt:
Array(11).join("a") // create string with 10 a's: "aaaaaaaaaa"
(Beachten Sie, dass ein Array mit der Länge 11 nur 10 "a" ergibt , da Array.join
das Argument zwischen den Array-Elementen steht.)
Simon weist auch darauf hin, dass es laut jsperf in Safari und Chrome (aber nicht in Firefox) schneller zu sein scheint, ein Zeichen mehrmals zu wiederholen, indem einfach eine for-Schleife angehängt wird (obwohl etwas weniger präzise).
Array(rawValue.length + 1).join("*")
Array(n+1).join("a")
. Wenn n = 0 ist, wird die leere Zeichenfolge zurückgegeben, und wenn n = 1, wird zurückgegeben"a"
. Ich denke, es funktioniert in allen Fällen.In einer neuen ES6-Harmonie haben Sie eine native Möglichkeit, dies mit Wiederholung zu tun . Auch ES6 derzeit nur experimentell, diese Funktion ist bereits in Edge, FF, Chrome und Safari verfügbar
Und wenn die Wiederholungsfunktion nicht verfügbar ist, können Sie sicherlich old-good verwenden
Array(n + 1).join("abc")
quelle
Praktisch, wenn Sie sich oft wiederholen:
quelle
repeat(str, n)
.n= n || 1
Teil entfernen (oder prüfen, obn
es undefiniert ist), damit Sie auch die0
Zeiten wiederholen können .String.repeat
wurde nur in ES6 hinzugefügt, das erst im Juni 2015 abgeschlossen wurde. Ich denke, mein Punkt war gültig, als ich ihn 2012 schrieb. :)Der leistungsfähigste Weg ist https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat
Kurzversion ist unten.
Polyfill von Mozilla:
quelle
count >>>= 1, pattern += pattern;
näher erläutern ? Was ist das für eine Aussage?if (!String.prototype.repeat) {
am Anfang und}
am Ende hinzu.Eine Alternative ist:
Wenn Sie mehrere Zeichen wiederholen müssen, multiplizieren Sie Ihre Bedingung:
HINWEIS: Sie müssen nicht wie bei um 1 überschießen
word = Array(11).join('a')
quelle
Wenn Sie nicht dagegen sind, eine Bibliothek in Ihr Projekt aufzunehmen, verfügt lodash über eine Wiederholungsfunktion.
https://lodash.com/docs#repeat
quelle
Für alle Browser
Die folgende Funktion wird viel schneller ausgeführt als die in der akzeptierten Antwort vorgeschlagene Option:
Sie würden es so verwenden:
Um die Leistung dieser Funktion mit der der in der akzeptierten Antwort vorgeschlagenen Option zu vergleichen, finden Sie Benchmarks in dieser Geige und dieser Geige .
Nur für moderne Browser
In modernen Browsern können Sie dies jetzt mit folgender
String.prototype.repeat
Methode tun :Lesen Sie mehr über diese Methode auf MDN .
Diese Option ist noch schneller. Leider funktioniert es in keiner Version des Internet Explorers. Die Zahlen in der Tabelle geben die erste Browserversion an, die die Methode vollständig unterstützt:
quelle
Obwohl die am häufigsten gewählte Antwort etwas kompakter ist, müssen Sie bei diesem Ansatz kein zusätzliches Array-Element hinzufügen.
quelle
fill()
wenn Sie das gleiche mitjoin("a")
allein tun ...quelle
In ES2015 / ES6 können Sie verwenden
"*".repeat(n)
Fügen Sie dies einfach zu Ihren Projekten hinzu, und schon kann es losgehen.
quelle
Eine andere interessante Möglichkeit, n Zeichen schnell zu wiederholen, besteht darin, die Idee eines schnellen Exponentiationsalgorithmus zu verwenden:
quelle
Um einen Wert in meinen Projekten zu wiederholen, verwende ich repeat
Zum Beispiel:
Seien Sie jedoch vorsichtig, da diese Methode zur ECMAScript 6-Spezifikation hinzugefügt wurde.
quelle
quelle
Folgendes benutze ich:
quelle
Ich werde die Antwort von @ bonbon erweitern . Seine Methode ist eine einfache Möglichkeit, "N Zeichen an eine vorhandene Zeichenfolge anzuhängen", nur für den Fall, dass jemand dies tun muss. Zum Beispiel, da "ein Google" eine 1 ist, gefolgt von 100 Nullen .
HINWEIS: Sie müssen der Bedingung die Länge der ursprünglichen Zeichenfolge hinzufügen.
quelle
Lodash bietet eine ähnliche Funktionalität wie die Funktion Javascript repeat () , die nicht in allen Browsern verfügbar ist. Es heißt _.repeat und ist seit Version 3.0.0 verfügbar:
quelle
quelle
Kann auch als Einzeiler verwendet werden:
quelle
In CoffeeScript:
quelle
Auf diese Weise können Sie eine Funktion aufrufen und das Ergebnis mithilfe von Array () und join () abrufen.
quelle
quelle
String.prototype.repeat
, was in aktuellen Browsern nativ enthalten ist. Warum sollte man es auch minimieren? Sie müssen nicht alles in einer Zeile schreiben.Hier ist eine ES6-Version
quelle