SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
16.04.2025

Iterando pelo localStorage em JS: O Loop for...in

Resposta Rápida

Para iterar sobre o localStorage usando um loop for e acessar pares chave-valor com .key() e .getItem(), você pode usar o seguinte código:

for (let i = 0; i < localStorage.length; i++) {
  console.log(localStorage.key(i), localStorage.getItem(localStorage.key(i)));
}

O código acima permite exibir cada par chave-valor, demonstrando como a iteração e a recuperação de dados ocorrem.

Superando Limitações: Armazenando Dados Não-String

O localStorage foi projetado para armazenar dados em formato de string. Para salvar arrays ou objetos, você precisa serializá-los usando JSON.stringify e deserializá-los usando JSON.parse:

// Salvar um objeto no localStorage
localStorage.setItem('dadosUsuario', JSON.stringify({ nome: 'João', idade: 30 }));

// Recuperar o objeto salvo
let dadosUsuario = JSON.parse(localStorage.getItem('dadosUsuario'));
console.log(dadosUsuario.nome); // saída: João

Como nem todos os navegadores suportam perfeitamente o armazenamento de dados não-string, é aconselhável usar JSON para compatibilidade.

Iterando Por Todos os Elementos: Padrões Úteis e Erros Comuns

Esqueça o for...in!

O loop for...in não é adequado para iterar sobre elementos no localStorage. Este loop é aplicável para trabalhar com objetos gerais, mas não para objetos de Storage.

Mantendo Todas as Chaves Sob Controle: Usando Object.keys()

Use Object.keys() para extrair todas as chaves do localStorage e aplicar métodos de array como .forEach(), .map() e .filter():

Object.keys(localStorage).forEach((chave) => {
  console.log(chave, localStorage.getItem(chave));
});

Emparelhando Chaves com Object.entries()

A iteração pode ser simplificada usando Object.entries(), que retorna um array de pares chave-valor:

Object.entries(localStorage).forEach(([chave, valor]) => {
  console.log(chave, valor); // output: chave e valor correspondente em string
});

Iteração Usando jQuery

Se você prefere jQuery, então $.each torna o processo de iteração mais fácil:

$.each(localStorage, (chave, valor) => {
  console.log(chave, valor);
});

Característica Específica do Chrome

No Chrome, é possível iterar pelo localStorage diretamente sem usar .key():

for (let chave in localStorage) {
  if (localStorage.hasOwnProperty(chave)) {
    console.log(chave, localStorage[chave]);
  }
}

Visualização

Imagine o localStorage como uma galeria, onde cada obra representa um elemento:

Chave Conteúdo da Imagem (Valor)
'configUsuario' 🛠️
'dadosSessao' 📊
'preferenciaTema' 🌓
'carrinho' 🛒

Percorrer a galeria é análogo a percorrer o localStorage:

for (let i = 0; i < localStorage.length; i++) {
    let chave = localStorage.key(i);        // Obter o título da obra
    let valor = localStorage.getItem(chave); // Examinar seu conteúdo
}

Assim como ao caminhar por uma galeria, cada passo pelo localStorage nos permite explorar o valor de cada elemento por sua chave.

Lidando com Casos Limites e Situações Únicas

Mantendo a Ordem: Utilizando Arrays!

Use arrays para manter a sequência dos elementos. Eles ajudam a preservar a ordem original:

// Salvando um array
let itens = ['item1', 'item2', 'item3'];
localStorage.setItem('itens', JSON.stringify(itens));

// Recuperar e iterar sobre o array
itens = JSON.parse(localStorage.getItem('itens'));
itens.forEach((item) => {
  console.log(item); // Saída: 'item1', 'item2', 'item3' na ordem salva
});

Segurança e Compatibilidade: Não Esqueça de Verificar o Navegador!

É importante garantir o suporte para localStorage e métodos de serialização, especialmente quando há chances de encontrar versões de navegador mais antigas ou configurações atípicas:

if (typeof Storage !== 'undefined') {
  // Tudo está bem, o armazenamento é suportado!
} else {
  // Infelizmente, o armazenamento web não é suportado.
}

Considerando Especificidades: Trabalhando com Dados Complexos

Tente evitar quebrar dados complexos em strings. É melhor salvar dados estruturados com chaves únicas para um acesso mais fácil. Observe os limites de armazenamento (geralmente em torno de 5MB) e as políticas do navegador que podem influenciar sua abordagem ao uso desse tipo de armazenamento.

Recursos Úteis

  1. Window: propriedade localStorage - Web APIs | MDN – Um recurso útil para aprender sobre a API de armazenamento local.
  2. HTML Web Storage API – Um tutorial fácil de aprender com exemplos reais de utilização do armazenamento web HTML5.
  3. LocalStorage, sessionStorage – Uma descrição detalhada do uso de armazenamento local e de sessão em JavaScript.
  4. HTML5 - Armazenamento Web – Visão geral do armazenamento web em HTML5 com exemplos de uso.
  5. localStorage em JavaScript: Um guia completo - LogRocket Blog – Informações adicionais sobre o uso do localStorage e seus casos de uso específicos.
  6. Uma Visão Geral da API de Armazenamento Web — SitePoint – Uma explicação clara sobre a API de armazenamento web com recomendações de uso.
  7. Introdução ao localStorage e sessionStorage | DigitalOcean – Um guia introdutório ao armazenamento web com foco na segurança dos dados e melhores práticas de uso.

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!