Start · Sprachen · JavaScript · Referenz · Storage.key()

Storage.key()

Methode

Gibt den Namen des Schlüssels an Position <code>index</code> in einem <code>Storage</code>-Objekt zurück oder <code>null</code>, wenn es an dieser Position keinen Eintrag gibt.

seit JavaScript Baseline: alle Browser (Web Storage API) Kategorie: webapi

Signatur

Storage.prototype.key(index)

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

Typ
string | null
Beschreibung
Den Schlüsselnamen als 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)}`);
}
theme = dark lang = de (Reihenfolge kann je nach Browser abweichen)

Index außerhalb des Bereichs

sessionStorage.clear();
sessionStorage.setItem('step', '1');

console.log(sessionStorage.key(0));
console.log(sessionStorage.key(5));
step null

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:'));
2

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)));
{"settings":"{}"}

// 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 über key(i) Einträge mit removeItem() 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 localStorage gleichzeitig ändern. Dann gelten zuvor ermittelte Indizes nicht mehr.
  • Ausnahmen: Im privaten Modus mancher Browser oder bei blockierten Cookies kann schon der Zugriff auf localStorage einen SecurityError werfen. Umschließe ihn daher mit try…catch.
  • Alternative: Object.keys(localStorage) liefert ebenfalls alle Schlüssel. key() ist aber der von der Spezifikation vorgesehene Weg.