Есть ли способ удалить все элементы sessionStorage с ключами, которые соответствуют определенному шаблону?
допустим мой sessionStorage содержит три объекта, ключи которых являются foo, foobar и baz. Есть ли способ, которым я могу позвонить .removeItem или как-то удалить все элементы sessionStorage кто ключи матч foo? В этом примере я бы остался только с элементом, который является ключом baz.
4 ответов
Обновление 20 Сентября 2014 как указал Джордан Трудгетт, обратный цикл более уместен
вы можете достичь его только программно, как sessionStorage предоставляет ограниченный набор методов: getItem(key), setItem(key, value), removeItem(key), key(position), clear() и length():
var i = sessionStorage.length;
while(i--) {
var key = sessionStorage.key(i);
if(/foo/.test(key)) {
sessionStorage.removeItem(key);
}
}
см. запись в блоге Николаса Закаса для более подробной информации:
http://www.nczonline.net/blog/2009/07/21/introduction-to-sessionstorage/
вы могли бы сделать что-то вроде
Object.keys(sessionStorage)
.filter(function(k) { return /foo/.test(k); })
.forEach(function(k) {
sessionStorage.removeItem(k);
});
поскольку локальные и sessionStorage являются объектами, вы можете просмотреть их свойства следующим образом:
for (var obj in localStorage) {
if (localStorage.hasOwnProperty(obj) && obj == "myKey") {
localStorage.removeItem(obj);
}
}
и удалите нужные значения по ключу, вот, например," myKey".
попробуйте это:
angular.forEach(sessionStorage, function (item,key) {
sessionStorage.removeItem(key);
});
это удалит все из sessionStorage