Eu só estou querendo saber como obter todos os valores-chave localStorage
.
Eu tentei recuperar os valores com um loop JavaScript simples
for (var i=1; i <= localStorage.length; i++) {
alert(localStorage.getItem(i))
}
Mas funciona apenas se as teclas forem números progressivos, iniciando em 1.
Como obtenho todas as chaves para exibir todos os dados disponíveis?
javascript
html
key
local-storage
Simone
fonte
fonte
Respostas:
no ES2017 você pode usar:
fonte
Object.keys()
funciona como esperado também?EDIT: esta resposta está recebendo muitos votos positivos, então eu acho que é uma pergunta comum. Sinto que devo isso a qualquer um que possa tropeçar na minha resposta e achar que está "certo" só porque foi aceito para fazer uma atualização. A verdade é que o exemplo acima não é realmente o caminho certo para fazer isso. A maneira melhor e mais segura é fazer assim:
fonte
localStorage.length
e não usá-lo diretamente? 2) Por que declará-lo dentro do loop for? 3) Por que++i
preferiri++
?++i
definitivamente , não inicia o ciclo àsi = 1
. A terceira expressão entre parênteses é avaliada após cada iteração.i++
e++i
ambos têm exatamente o mesmo efeitoi
. A diferença é que++i
avalia o novo valor dei
após incrementar, enquanto quei++
avalia o valor dei
antes de incrementar. Não faz absolutamente nenhuma diferença aqui, porque tudo o que importa é o efeito colateral do incrementoi
, não o valor da expressão.Object.keys(localStorage)
funciona perfeitamente bem para este cenário, desde que você não precisa para apoiar IE <9.localStorage.key( i )
peça.Eu gosto de criar um objeto facilmente visível a partir dele assim.
Eu faço uma coisa semelhante com os cookies também.
fonte
fonte
Você pode usar a
localStorage.key(index)
função para retornar a representação em cadeia, ondeindex
é o enésimo objeto que você deseja recuperar.fonte
Se o navegador suportar HTML5 LocalStorage, ele também deve implementar Array.prototype.map, permitindo o seguinte:
fonte
new Array(this.localStorage.length).fill(0)
que parece um pouco menos invasivo do que usar o aplicativo imo.Desde que a pergunta mencionou encontrar as chaves, achei que mencionaria que, para mostrar todos os pares de chaves e valores, você poderia fazer assim (com base na resposta de Kevin):
Isso registrará os dados no formato "chave: valor"
(Kevin: fique à vontade para apenas levar essa informação à sua resposta, se quiser!)
fonte
Isso imprimirá todas as chaves e valores no localStorage:
ES6:
fonte
Você pode obter chaves e valores como este:
fonte
Concordo com Kevin, ele tem a melhor resposta, mas às vezes quando você tem chaves diferentes em seu armazenamento local com os mesmos valores, por exemplo, você deseja que seus usuários públicos vejam quantas vezes eles adicionaram seus itens em suas cestas, você precisa mostrar a eles número de vezes, então você pode usar isto:
fonte
Para aqueles que mencionam o uso
Object.keys(localStorage)
... não, porque não funcionará no Firefox (ironicamente porque o Firefox é fiel às especificações). Considere isto:Como key, getItem e setItem são métodos prototípicos
Object.keys(localStorage)
retornados apenas["key2"]
.É melhor fazer algo assim:
fonte
object.keys()
... Vou atualizar minha resposta para refletir isso.[Exposed=Window]
. Isso resulta no comportamento que eu descrevo. Se fosse especificado[Exposed=Window,OverrideBuiltins]
, daria o comportamento que esperamos, mas a especificação não especificaOverrideBuiltins
. Você pode ver uma discussão sobre isso em WHATWG / html aqui: github.com/whatwg/html/issues/183Também podemos ler pelo nome.
Digamos que salvamos o valor com o nome 'user' assim
Então podemos ler usando
Eu usei e está funcionando sem problemas, não há necessidade de fazer o loop for
fonte