188 votes

Obtenir les clés HTML5 localStorage

Je me demande juste comment obtenir toutes les valeurs de clés dans localStorage .


J'ai essayé de récupérer les valeurs avec une simple boucle JavaScript.

for (var i=1; i <= localStorage.length; i++)  {
   alert(localStorage.getItem(i))
}

Mais cela ne fonctionne que si les touches sont des numéros progressifs, en commençant par 1.


Comment obtenir toutes les clés, afin d'afficher toutes les données disponibles ?

0 votes

1 votes

Duplicata possible de stackoverflow.com/questions/3138564/

1 votes

Pourquoi cette boucle commence-t-elle par i = 1 et se termine-t-elle par i = localStorage.length ? Dans les navigateurs que j'ai testés (Chrome), la boucle devrait commencer à 0 et se terminer à localStorage.length - 1...

330voto

Kevin Ennis Points 6061
for (var key in localStorage){
   console.log(key)
}

EDIT : cette réponse obtient beaucoup de votes positifs, donc je suppose que c'est une question courante. J'ai l'impression que je dois faire une mise à jour pour tous ceux qui pourraient tomber sur ma réponse et penser qu'elle est "juste" juste parce qu'elle a été acceptée. La vérité, c'est que l'exemple ci-dessus n'est pas vraiment le bon. droite manière de le faire. Le meilleur moyen et le plus sûr est de faire comme ceci :

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

1 votes

Dans ce lien .... stackoverflow.com/questions/15313606/ ... pourquoi utilisent-ils toutes ces méthodes étranges pour accéder à localStorage ?

1 votes

i < len: devrait être i < len;

4 votes

Plusieurs questions pour le code "best/safest" : 1) Pourquoi déclarer localStorage.length et ne pas l'utiliser directement ? 2) Pourquoi le déclarer à l'intérieur de la boucle for ? 3) Pourquoi ++i est préféré à i++ ?

76voto

nktshn Points 637

Dans l'ES2017, vous pouvez utiliser :

Object.entries(localStorage)

33voto

Zack Argyle Points 2679

J'aime créer un objet facilement visible à partir de ça, comme ceci.

Object.keys(localStorage).reduce(function(obj, str) { 
    obj[str] = localStorage.getItem(str); 
    return obj
}, {});

Je fais la même chose avec les cookies.

document.cookie.split(';').reduce(function(obj, str){ 
    var s = str.split('='); 
    obj[s[0].trim()] = s[1];
    return obj;
}, {});

16voto

nerdcoder Points 126
function listAllItems(){  
    for (i=0; i<localStorage.length; i++)  
    {  
        key = localStorage.key(i);  
        alert(localStorage.getItem(key));
    }  
}

10voto

Jeffrey Sweeney Points 3052

Vous pouvez utiliser le localStorage.key(index) pour retourner la représentation de la chaîne de caractères, où index est le nième objet que vous voulez récupérer.

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