Więc pomyślałem, że mógłbym po prostu zapętlić localStorage jak normalny obiekt, ponieważ ma długość. Jak mogę przez to przejść?
localStorage.setItem(1,'Lorem');
localStorage.setItem(2,'Ipsum');
localStorage.setItem(3,'Dolor');
Jeśli zrobię localStorage.length
, zwraca, 3
co jest poprawne. Więc zakładam, że for...in
pętla zadziała.
Myślałem o czymś takim:
for (x in localStorage){
console.log(localStorage[x]);
}
Ale bezskutecznie. Jakieś pomysły?
Inny pomysł, jaki miałem, był taki
localStorage.setItem(1,'Lorem|Ipsum|Dolor')
var split_list = localStorage.getItem(1).split('|');
W którym for...in
działa.
javascript
html
loops
object
local-storage
Oscar Godson
źródło
źródło
Odpowiedzi:
Możesz użyć
key
metody.localStorage.key(index)
zwracaindex
th klucz (kolejność jest zdefiniowana w ramach implementacji, ale stała do momentu dodania lub usunięcia kluczy).for (var i = 0; i < localStorage.length; i++){ $('body').append(localStorage.getItem(localStorage.key(i))); }
Jeśli kolejność ma znaczenie, możesz przechowywać tablicę zserializowaną JSON:
localStorage.setItem("words", JSON.stringify(["Lorem", "Ipsum", "Dolor"]));
Wersja robocza specyfikacji twierdzi, że każdy obiekt obsługujący klon strukturalny może być wartością. Ale to nie wydaje się być jeszcze obsługiwane.
EDYCJA: Aby załadować tablicę, dodaj do niej, a następnie zapisz:
var words = JSON.parse(localStorage.getItem("words")); words.push("hello"); localStorage.setItem("words", JSON.stringify(words));
źródło
parse
jest bezpieczniejszy, ponieważ chroni Cię przed wykonaniem kodu. Często jest też znacznie szybszy. Zobacz blog.mozilla.com/webdev/2009/02/12/native-json-in-firefox-31JSON.parse('["Lorem", "Ipsum", "Dolor"]').length
Najprostszy sposób to:
Object.keys(localStorage).forEach(function(key){ console.log(localStorage.getItem(key)); });
źródło
Oprócz wszystkich innych odpowiedzi możesz użyć funkcji $ .each z biblioteki jQuery:
$.each(localStorage, function(key, value){ // key magic // value magic });
Ostatecznie zdobądź obiekt z:
źródło
$
jest używany dla innych bibliotek i często jest również używany jako alias dladocument.querySelectorAll
. Pytanie nie jest również oznaczone jako pytanie [jquery].To działa dla mnie w Chrome:
for(var key in localStorage) { $('body').append(localStorage.getItem(key)); }
źródło
for(var key in localStorage) { console.log(localStorage.getItem(key)); }
TypeError: Cannot call method 'toString' of null
, więc zakładam, że „klucz” zwraca wartość nullOpierając się na poprzedniej odpowiedzi, jest to funkcja, która będzie przechodzić przez lokalną pamięć według klucza bez znajomości wartości kluczy.
function showItemsByKey() { var typeofKey = null; for (var key in localStorage) { typeofKey = (typeof localStorage[key]); console.log(key, typeofKey); } }
Jeśli przeanalizujesz dane wyjściowe konsoli, zobaczysz, że elementy dodane przez twój kod mają typ string. Natomiast elementy wbudowane są albo funkcjami {[kod natywny]}, albo w przypadku właściwości length liczbą. Możesz użyć zmiennej typeofKey, aby odfiltrować tylko ciągi znaków, aby wyświetlane były tylko elementy.
Zauważ, że działa to nawet jeśli przechowujesz liczbę lub wartość logiczną jako wartość, ponieważ oba są przechowywane jako ciągi.
źródło
Wszystkie te odpowiedzi ignorują różnice między implementacjami localStorage w różnych przeglądarkach. Współautorzy w tej domenie powinni ściśle kwalifikować swoje odpowiedzi do opisywanych przez siebie platform. Jedna implementacja dla całej przeglądarki jest udokumentowana na https://developer.mozilla.org/en/docs/Web/API/Window/localStorage i chociaż jest bardzo potężna, zawiera tylko kilka podstawowych metod. Przeglądanie zawartości wymaga zrozumienia implementacji specyficznej dla poszczególnych przeglądarek.
źródło
localStorage
jestObject
.Możemy ją przejrzeć w pętli za pomocą instrukcji JavaScript for / in, tak jak każdy inny obiekt.
I użyjemy,
.getItem()
aby uzyskać dostęp do wartości każdego klucza (x).for (x in localStorage){ console.log(localStorage.getItem(x)); }
źródło