Pregunta

Lets say my sessionStorage contains three objects who's keys are foo, foobar, and baz. Is there a way that I can call .removeItem or somehow delete all items in sessionStorage who's keys match foo? In this example I'd be left with only the item who's key is baz.

¿Fue útil?

Solución

Update September 20, 2014 As pointed out by Jordan Trudgett the reverse loop is more appropriate

You can only achieve it programmatically as sessionStorage exposes a limited set of methods: getItem(key), setItem(key, value), removeItem(key), key(position), clear() and length():

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

See Nicholas C. Zakas' blog entry for more details:

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

Otros consejos

You could do something like

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

Since both local and sessionStorage are objects you can go through their properties like this:

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

and remove the desired values by key, here it's "myKey" for example.

Remove all session storage items:

sessionStorage.clear()

Try this:

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

This will delete everything from sessionStorage

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top