Signatur
Beschreibung
Die Methode key() der Storage-Schnittstelle liefert den Namen des Schlüssels an der angegebenen Position. Zusammen mit Storage.length lassen sich damit alle Einträge in localStorage oder sessionStorage durchlaufen, ohne die Schlüsselnamen vorher zu kennen.
Typische Einsatzfälle sind Debug-Ausgaben, Migrationen (z. B. alle Schlüssel mit einem bestimmten Präfix umbenennen oder löschen) und das Exportieren des gesamten Speicherinhalts. Den eigentlichen Wert holt man danach mit getItem().
Wichtig: Die Reihenfolge der Schlüssel legt der Browser fest. Die Spezifikation garantiert nur, dass sie gleich bleibt, solange sich die Anzahl der Einträge nicht ändert. Sie hängt nicht zuverlässig von der Einfügereihenfolge oder vom Alphabet ab. Sobald ein Eintrag hinzukommt oder entfernt wird, können sich alle Indizes verschieben.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $index Pflicht | number | Nullbasierte Position des gewünschten Schlüssels. Der Wert wird in eine vorzeichenlose 32-Bit-Ganzzahl umgewandelt (unsigned long). |
Rückgabewert
string oder null, wenn index größer oder gleich storage.length ist.Beispiele
Alle Einträge von localStorage auflisten
localStorage.setItem('theme', 'dark');
localStorage.setItem('lang', 'de');
for (let i = 0; i < localStorage.length; i++) {
const key = localStorage.key(i);
console.log(`${key} = ${localStorage.getItem(key)}`);
}
Index außerhalb des Bereichs
sessionStorage.clear();
sessionStorage.setItem('step', '1');
console.log(sessionStorage.key(0));
console.log(sessionStorage.key(5));
Alle Schlüssel mit Präfix sicher löschen
const removeByPrefix = (storage, prefix) => {
// Erst Schlüssel sammeln, dann löschen – sonst verschieben sich die Indizes
const keys = [];
for (let i = 0; i < storage.length; i++) {
const key = storage.key(i);
if (key?.startsWith(prefix)) keys.push(key);
}
keys.forEach((key) => storage.removeItem(key));
return keys.length;
};
localStorage.setItem('cache:user', '{}');
localStorage.setItem('cache:posts', '[]');
localStorage.setItem('settings', '{}');
console.log(removeByPrefix(localStorage, 'cache:'));
Speicherinhalt als Objekt exportieren
const exportStorage = (storage) =>
Object.fromEntries(
Array.from({ length: storage.length }, (_, i) => {
const key = storage.key(i);
return [key, storage.getItem(key)];
})
);
console.log(JSON.stringify(exportStorage(localStorage)));
// Wichtig · Fallstricke
- Keine feste Reihenfolge: Verlass dich nicht darauf, dass
key(0)der zuerst gespeicherte Schlüssel ist. Die Reihenfolge unterscheidet sich zwischen Browsern. - Löschen in der Schleife: Wenn du innerhalb einer
for-Schleife überkey(i)Einträge mitremoveItem()entfernst, verschieben sich die Indizes und du überspringst Einträge. Sammle die Schlüssel besser zuerst oder lauf rückwärts durch die Liste. - Nicht aufgerufener Index: Negative Zahlen werden in große vorzeichenlose Werte umgewandelt und liefern daher
null. Das ist kein Fehler. - Andere Tabs: Ein anderes Fenster mit demselben Ursprung kann
localStoragegleichzeitig ändern. Dann gelten zuvor ermittelte Indizes nicht mehr. - Ausnahmen: Im privaten Modus mancher Browser oder bei blockierten Cookies kann schon der Zugriff auf
localStorageeinenSecurityErrorwerfen. Umschließe ihn daher mittry…catch. - Alternative:
Object.keys(localStorage)liefert ebenfalls alle Schlüssel.key()ist aber der von der Spezifikation vorgesehene Weg.