Signatur
Beschreibung
Die Methode padEnd() gibt einen neuen String zurück, der am Ende so lange mit padString aufgefüllt wird, bis er die Länge targetLength hat. Ist der Füllstring zu lang für den verbleibenden Platz, wird er abgeschnitten. Reicht er nicht, wird er wiederholt. Der ursprüngliche String bleibt unverändert, denn Strings sind in JavaScript unveränderlich.
Typische Einsatzfälle sind linksbündige Spalten in Konsolen- oder Textausgaben (Tabellen, Logs, CLI-Werkzeuge), Datensätze mit fester Breite (etwa für Altsysteme oder Bankformate) und optisches Ausrichten von Beschriftungen mit Punkten oder Leerzeichen, wie in einem Inhaltsverzeichnis.
Ist targetLength kleiner oder gleich der aktuellen Länge des Strings, kommt der String unverändert zurück. Er wird also nie gekürzt. Wenn du Werte auf eine feste Breite bringen musst, kombinierst du padEnd() mit slice(). Das Gegenstück, das am Anfang auffüllt, ist padStart().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $targetLength Pflicht | number | Länge, die der Ergebnis-String haben soll. Ist der Wert kleiner oder gleich str.length, wird der String unverändert zurückgegeben. Der Wert wird in eine Ganzzahl umgewandelt (NaN wird zu 0). |
|
| $padString | string | " " (Leerzeichen, U+0020) | Der Füllstring. Er wird bei Bedarf wiederholt und am Ende abgeschnitten, damit die Ziellänge genau passt. Ein leerer String ("") bewirkt, dass nichts aufgefüllt wird. Werte, die keine Strings sind, werden in einen String umgewandelt. |
Rückgabewert
targetLength, am Ende mit padString aufgefüllt, oder der unveränderte ursprüngliche String, wenn keine Auffüllung nötig ist.Beispiele
Grundlegendes Verhalten
console.log('abc'.padEnd(10)); // mit Leerzeichen
console.log('abc'.padEnd(10, 'foo')); // wiederholt
console.log('abc'.padEnd(6, '123456')); // abgeschnitten
console.log('abc'.padEnd(1)); // kein Kürzen
console.log('abc'.padEnd(8, '')); // leerer Füllstring
Tabellarische Konsolenausgabe mit linksbündigen Spalten
const produkte = [
{ name: 'Tastatur', preis: 49.9 },
{ name: 'Maus', preis: 19.5 },
{ name: 'Monitor 27"', preis: 289 }
];
const breite = Math.max(...produkte.map(p => p.name.length)) + 2;
for (const { name, preis } of produkte) {
console.log(`${name.padEnd(breite)}${preis.toFixed(2).padStart(8)} €`);
}
Inhaltsverzeichnis mit Füllpunkten
const kapitel = [
['Einleitung', 1],
['Grundlagen', 7],
['Fortgeschrittene Themen', 42]
];
const zeilen = kapitel.map(([titel, seite]) =>
`${(titel + ' ').padEnd(30, '.')} ${String(seite).padStart(3)}`
);
console.log(zeilen.join('\n'));
Datensatz mit fester Feldbreite (auffüllen und kürzen)
// Jedes Feld hat exakt die angegebene Breite
const feld = (wert, breite) => String(wert).padEnd(breite).slice(0, breite);
const datensatz = feld('Mustermann', 8) + feld('Erika', 6) + feld('Berlin', 10);
console.log(`[${datensatz}]`);
console.log(datensatz.length);
// Wichtig · Fallstricke
- Kein Kürzen:
padEnd()macht einen String nie kürzer. Wenn du eine feste Breite erzwingen musst, hängst du.slice(0, n)an. - Länge in UTF-16-Codeeinheiten:
targetLengthbezieht sich auflength, also nicht auf sichtbare Zeichen. Emojis wie'😀'zählen als 2, kombinierte Zeichen (z. B.'e\u0301') ebenfalls als mehrere Einheiten. Ein mehrteiliger Füllstring kann außerdem mitten in einem Ersatzzeichenpaar (Surrogatpaar) abgeschnitten werden, zum Beispiel ergibt'a'.padEnd(2, '😀')ein ungültiges Einzelzeichen. Spalten mit Emojis oder breiten Schriftzeichen (CJK) werden in der Konsole deshalb oft nicht exakt ausgerichtet. - Nur für Strings: Zahlen musst du erst umwandeln (
String(n)odern.toString()).(5).padEnd(3)wirft einenTypeError. - Zu große Ziellänge: Liegt
targetLengthüber der maximalen String-Länge der Engine, wird einRangeErrorausgelöst (z. B.'a'.padEnd(Infinity)). - Kompatibilität: Seit ES2017 verfügbar und in allen modernen Browsern sowie ab Node.js 8 unterstützt. Der Internet Explorer kennt die Methode nicht, dort ist ein Polyfill nötig (z. B. über core-js).