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