Ich frage mich nur, wie ich alle Schlüsselwerte erreichen kann localStorage
.
Ich habe versucht, die Werte mit einer einfachen JavaScript-Schleife abzurufen
for (var i=1; i <= localStorage.length; i++) {
alert(localStorage.getItem(i))
}
Dies funktioniert jedoch nur, wenn die Tasten progressive Zahlen sind, beginnend bei 1.
Wie bekomme ich alle Schlüssel, um alle verfügbaren Daten anzuzeigen?
javascript
html
key
local-storage
Simone
quelle
quelle
Antworten:
In ES2017 können Sie Folgendes verwenden:
quelle
Object.keys()
funktioniert auch wie erwartet?EDIT: Diese Antwort bekommt viele positive Stimmen, also denke ich, dass es eine häufige Frage ist. Ich habe das Gefühl, ich schulde es jedem, der über meine Antwort stolpern und denken könnte, dass es "richtig" ist, nur weil es akzeptiert wurde, ein Update vorzunehmen. Die Wahrheit ist, dass das obige Beispiel nicht wirklich der richtige Weg ist, dies zu tun. Der beste und sicherste Weg ist, es so zu machen:
quelle
localStorage.length
und nicht direkt verwenden? 2) Warum in der for-Schleife deklarieren? 3) Warum++i
wird bevorzugti++
?++i
Auf keinen Fall beginnt die Schleife beii = 1
. Der dritte Ausdruck in der Klammer wird nach jeder Iteration ausgewertet .i++
und++i
beide haben genau den gleichen Effekt aufi
. Der Unterschied besteht darin , dass++i
auswertet auf den neuen Wert desi
nach dem Inkrementieren, währendi++
auswertet auf den Werti
vor der Inkrementierung. Hier macht es absolut keinen Unterschied, denn alles, was uns wichtig ist, ist der Nebeneffekt des Inkrementierensi
, nicht der Wert des Ausdrucks.Object.keys(localStorage)
perfekt für dieses Szenario funktioniert, solange Sie IE <9 nicht unterstützen müssen.localStorage.key( i )
Teil tun können, wenn Sie den Namen des Schlüssels selbst anzeigen möchten .Ich mag es, daraus ein leicht sichtbares Objekt zu erstellen.
Ähnliches mache ich auch mit Cookies.
quelle
quelle
Mit der
localStorage.key(index)
Funktion können Sie die Zeichenfolgendarstellung zurückgeben, wobeiindex
sich das n-te Objekt befindet, das Sie abrufen möchten.quelle
Wenn der Browser HTML5 LocalStorage unterstützt, sollte er auch Array.prototype.map implementieren und Folgendes aktivieren:
quelle
new Array(this.localStorage.length).fill(0)
das sich etwas weniger hackig anfühlt als Apply Imo.Da in der Frage das Finden der Schlüssel erwähnt wurde, dachte ich, ich würde erwähnen, dass Sie dies tun können, um jedes Schlüssel- und Wertepaar anzuzeigen (basierend auf Kevins Antwort):
Dadurch werden die Daten im Format "key: value" protokolliert.
(Kevin: Fühlen Sie sich frei, diese Informationen in Ihre Antwort aufzunehmen, wenn Sie möchten!)
quelle
Dadurch werden alle Schlüssel und Werte in localStorage gedruckt:
ES6:
quelle
Sie können Schlüssel und Werte wie folgt erhalten:
quelle
Ich stimme Kevin zu, er hat die beste Antwort, aber manchmal, wenn Sie unterschiedliche Schlüssel in Ihrem lokalen Speicher mit denselben Werten haben, möchten Sie beispielsweise, dass Ihre öffentlichen Benutzer sehen, wie oft sie ihre Artikel in ihre Körbe gelegt haben, müssen Sie ihnen die zeigen Wie oft können Sie dies auch verwenden:
quelle
Für diejenigen, die die Verwendung von
Object.keys(localStorage)
... erwähnen, nicht, weil es in Firefox nicht funktioniert (ironischerweise, weil Firefox der Spezifikation treu bleibt). Bedenken Sie:Da key, getItem und setItem prototypische Methoden sind,
Object.keys(localStorage)
werden sie nur zurückgegeben["key2"]
.Am besten machst du so etwas:
quelle
object.keys()
... Ich werde meine Antwort aktualisieren, um dies widerzuspiegeln.[Exposed=Window]
. Dies führt zu dem von mir beschriebenen Verhalten. Wenn es mit angegeben[Exposed=Window,OverrideBuiltins]
würde, würde dies das erwartete Verhalten ergeben, aber die Spezifikation gibt es nicht anOverrideBuiltins
. Sie können eine Diskussion darüber in whatwg / html hier sehen: github.com/whatwg/html/issues/183Wir können auch unter dem Namen lesen.
Angenommen, wir haben den Wert mit dem Namen 'Benutzer' wie folgt gespeichert
Dann können wir es mit lesen
Ich habe es benutzt und es funktioniert reibungslos, die for-Schleife muss nicht ausgeführt werden
quelle