Signatur
Beschreibung
Die Methode repeat() erzeugt einen neuen String, in dem der Ausgangsstring count-mal hintereinander steht. Der ursprüngliche String bleibt unverändert, denn Strings sind in JavaScript unveränderlich.
Typische Einsatzfälle sind Einrückungen, Trennlinien und Platzhalter in der Konsolenausgabe, einfache Fortschrittsbalken, Maskierungen (z. B. "*".repeat(n)) und das Erzeugen von Testdaten mit bestimmter Länge.
Das Argument wird zuerst in eine ganze Zahl umgewandelt (Nachkommastellen werden abgeschnitten, NaN und undefined ergeben 0). Mit 0 erhält man einen leeren String. Negative Werte und Infinity lösen einen RangeError aus. Soll ein String nur bis zu einer bestimmten Gesamtlänge aufgefüllt werden, sind padStart() oder padEnd() meist die bessere Wahl.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $count Pflicht | number | Wie oft der String wiederholt wird. Erlaubt ist eine ganze Zahl zwischen 0 und +Infinity (ausschließlich). Nachkommastellen werden abgeschnitten; nicht-numerische Werte werden per ToNumber umgewandelt. |
Rückgabewert
count Kopien des Ausgangsstrings. Bei count = 0 ist das ein leerer String "".Beispiele
Grundlagen und Umwandlung des Arguments
console.log("ab".repeat(3));
console.log("ab".repeat(0));
console.log("ab".repeat(2.9)); // wird auf 2 abgeschnitten
console.log("ab".repeat("2")); // String wird in Zahl umgewandelt
console.log("ab".repeat()); // undefined → 0
Trennlinie und Einrückung für Konsolenausgabe
const printTree = (node, depth = 0) => {
console.log(`${" ".repeat(depth)}- ${node.name}`);
(node.children ?? []).forEach((child) => printTree(child, depth + 1));
};
console.log("=".repeat(20));
printTree({
name: "src",
children: [{ name: "lib", children: [{ name: "utils.js" }] }, { name: "index.js" }],
});
console.log("=".repeat(20));
Einfacher Fortschrittsbalken
const progressBar = (percent, width = 20) => {
const filled = Math.round((percent / 100) * width);
return `[${"#".repeat(filled)}${"-".repeat(width - filled)}] ${percent}%`;
};
console.log(progressBar(35));
console.log(progressBar(100));
Fehlerbehandlung bei ungültigem Argument
const safeRepeat = (str, n) => {
try {
return str.repeat(n);
} catch (err) {
console.log(`${err.name}: ungültige Anzahl ${n}`);
return "";
}
};
safeRepeat("x", -1);
safeRepeat("x", Infinity);
// Wichtig · Fallstricke
- RangeError: Negative Werte und
Infinitylösen einenRangeErroraus. Das passiert z. B., wenn beiwidth - filledein negativer Wert herauskommt. Wer auf Nummer sicher gehen will, schreibtMath.max(0, n). - Maximale Stringlänge: Überschreitet das Ergebnis die maximale Stringlänge der Engine (in V8 etwa 229–230 Zeichen), gibt es ebenfalls einen
RangeError(Invalid string length). Große Werte voncountkosten außerdem viel Speicher. - Leerer String:
"".repeat(n)liefert für jedes gültigeneinen leeren String – auch für sehr große Werte. - Unicode: Wiederholt werden UTF-16-Codeeinheiten. Bei Emojis und zusammengesetzten Zeichen stimmt
lengthdes Ergebnisses daher nicht mit der Anzahl der sichtbaren Zeichen überein. - Generisch: Die Methode wandelt
thisin einen String um. MitString.prototype.repeat.call(123, 2)erhält man also"123123". Beinulloderundefinedalsthisgibt es einenTypeError. - Kompatibilität: Wird von allen modernen Browsern und von Node.js ab 4 unterstützt. Der Internet Explorer kennt die Methode nicht, dort braucht man ein Polyfill (z. B. core-js).