Есть ли способ удалить все элементы sessionStorage с ключами, которые соответствуют определенному шаблону?

Допустим, что мой sessionStorage содержит три объекта, ключи которых foo, foobar и baz. Есть ли способ, который я могу назвать .removeItem или каким-то образом удалить все элементы в sessionStorage, какие ключи соответствуют foo? В этом примере у меня остался бы только элемент, ключ которого baz.

Ответ 1

Обновление 20 сентября 2014 г. Как отметил Джордан Трюджетт, обратный цикл более уместен

Вы можете достичь этого только программно, так как sessionStorage предоставляет ограниченный набор методов: getItem(key), setItem(key, value), removeItem(key), key(position), clear() и length():

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

Смотрите запись в блоге Николаса С. Закаса для более подробной информации:

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

Ответ 2

Вы можете сделать что-то вроде

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

Ответ 3

Так как локальные и sessionStorage являются объектами, вы можете пройти через их свойства следующим образом:

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

Ответ 4

Попробуйте следующее:

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

Это приведет к удалению всего из sessionStorage