web-dev-qa-db-fra.com

Existe-t-il un moyen de supprimer tous les éléments sessionStorage dont les clés correspondent à un certain modèle?

Disons que ma sessionStorage contient trois objets dont les clés sont foo, foobar et baz. Est-il possible d'appeler .removeItem ou de supprimer en quelque sorte tous les éléments de sessionStorage dont les clés correspondent à foo? Dans cet exemple, il ne resterait que l'élément dont la clé est baz.

15
Jesse Atkinson

Mise à jour du 20 septembre 2014 Comme l'a souligné Jordan Trudgett, la boucle inversée est plus appropriée

Vous ne pouvez le réaliser que par programme car sessionStorage expose un ensemble limité de méthodes: getItem(key), setItem(key, value), removeItem(key), key(position), clear() et length():

var i = sessionStorage.length;
while(i--) {
  var key = sessionStorage.key(i);
  if(/foo/.test(key)) {
    sessionStorage.removeItem(key);
  }  
}

Voir l'entrée de blog de Nicholas C. Zakas pour plus de détails:

http://www.nczonline.net/blog/2009/07/21/introduction-to-sessionstorage/

32
roland

Vous pourriez faire quelque chose comme

Object.keys(sessionStorage)
  .filter(function(k) { return /foo/.test(k); })
  .forEach(function(k) {
    sessionStorage.removeItem(k);
  });
9
Pointy

Puisque local et sessionStorage sont des objets, vous pouvez passer par leurs propriétés comme ceci:

    for (var obj in localStorage) {
      if (localStorage.hasOwnProperty(obj) && obj == "myKey") {
        localStorage.removeItem(obj);
      }
    }

et supprimez les valeurs souhaitées par clé, ici c'est "myKey" par exemple.

2
petko

Essaye ça: 

 angular.forEach(sessionStorage, function (item,key) {
          sessionStorage.removeItem(key);
      });

Cela supprimera tout de sessionStorage

0
Shubham Takode