132 votes

Boucle dans localStorage en HTML5 et JavaScript

Je me disais donc que je pourrais simplement boucler sur localStorage comme un objet normal puisqu'il a une longueur. Comment puis-je boucler dans cet objet ?

localStorage.setItem(1,'Lorem');
localStorage.setItem(2,'Ipsum');
localStorage.setItem(3,'Dolor');

Si je fais un localStorage.length il retourne 3 ce qui est correct. Donc je suppose qu'un for...in La boucle fonctionnerait.

Je pensais à quelque chose comme :

for (x in localStorage){
    console.log(localStorage[x]);
}

Mais sans succès. Des idées ?

L'autre idée que j'ai eue était quelque chose comme

localStorage.setItem(1,'Lorem|Ipsum|Dolor')
var split_list = localStorage.getItem(1).split('|');

Dans lequel le for...in fonctionne.

1 votes

176voto

Matthew Flaschen Points 131723

Vous pouvez utiliser le key méthode. localStorage.key(index) renvoie le index (l'ordre est défini par l'implémentation mais est constant jusqu'à ce que vous ajoutiez ou supprimiez des clés).

for (var i = 0; i < localStorage.length; i++){
    $('body').append(localStorage.getItem(localStorage.key(i)));
}

Si l'ordre est important, vous pouvez stocker un tableau sérialisé en JSON :

localStorage.setItem("words", JSON.stringify(["Lorem", "Ipsum", "Dolor"]));

Le projet de spécification affirme que tout objet qui supporte clone structuré peut être une valeur. Mais cela ne semble pas encore être supporté.

EDIT : Pour charger le tableau, l'ajouter, puis le stocker :

var words = JSON.parse(localStorage.getItem("words"));
words.push("hello");
localStorage.setItem("words", JSON.stringify(words));

0 votes

Merci beaucoup ! C'est exactement ce que je cherchais. Je vais aussi regarder le truc JSON que vous avez envoyé. Ce serait parfait. C'est pour une application iOS HTML5 Offline Baby Names.

0 votes

Question rapide, comment puis-je ajouter à ce JSON ? Par exemple, comment ajouter "hello" après "Dolor" ?

0 votes

@Oscar, j'ai donné un exemple ci-dessus. En gros, obtenir, parser, modifier le tableau, stringifier, définir.

64voto

Putra Ardiansyah Points 627

La méthode la plus simple est la suivante :

Object.keys(localStorage).forEach(function(key){
   console.log(localStorage.getItem(key));
});

0 votes

Cela a marché pour moi. en utilisant $.each(localStorage, function(key, value) pour une raison quelconque, j'ai inclus les fonctions de LocalStorage (c'est-à-dire CleaR) dans la liste des clés.

0 votes

Cela fonctionne comme un charme !

24voto

miksiii Points 45

En plus de toutes les autres réponses, vous pouvez utiliser 0,00 $ par personne fonction de la bibliothèque jQuery :

$.each(localStorage, function(key, value){

  // key magic
  // value magic

});

Finalement, obtenir l'objet avec :

JSON .parse(localStorage.getItem(localStorage.key(key)))) ;

2 votes

Cela ne fonctionne que si vous utilisez jQuery. $ est utilisé pour d'autres bibliothèques et est aussi souvent utilisé comme un alias de document.querySelectorAll . La question n'est pas non plus étiquetée comme une question [jquery].

13voto

Wizard Points 121
for (const [key, value] of Object.entries(localStorage)) {
   console.log(key, value);
}

Ici, nous bouclons à travers chaque clé et valeur respectivement dans le stockage local.

9voto

jtblin Points 1681

Cela fonctionne pour moi dans Chrome :

for(var key in localStorage) {
  $('body').append(localStorage.getItem(key));
}

1 votes

Quelle partie exactement ? Cet extrait utilise jQuery, conformément à la question initiale. Pouvez-vous essayer ceci dans la console js de chrome ? for(var key in localStorage) { console.log(localStorage.getItem(key)); }

0 votes

@jtblin Je viens de l'essayer, il a retourné TypeError: Cannot call method 'toString' of null donc je suppose que 'key' renvoie null.

1 votes

Cela fonctionne dans les versions récentes de Chrome, Safari et Firefox.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X