【发布时间】:2013-11-19 14:50:33
【问题描述】:
假设我的sessionStorage 包含三个对象,它们的键是foo、foobar 和baz。有没有办法可以调用.removeItem 或以某种方式删除sessionStorage 中的所有项目谁的键匹配foo?在此示例中,我将只剩下密钥为 baz 的项目。
【问题讨论】:
标签: javascript browser sessionstorage
假设我的sessionStorage 包含三个对象,它们的键是foo、foobar 和baz。有没有办法可以调用.removeItem 或以某种方式删除sessionStorage 中的所有项目谁的键匹配foo?在此示例中,我将只剩下密钥为 baz 的项目。
【问题讨论】:
标签: javascript browser sessionstorage
2014 年 9 月 20 日更新 正如 Jordan Trudgett 所指出的,反向循环更合适
您只能以编程方式实现它,因为 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);
}
}
有关更多详细信息,请参阅 Nicholas C. Zakas 的博客文章:
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);
});
【讨论】:
由于 local 和 sessionStorage 都是对象,您可以像这样查看它们的属性:
for (var obj in localStorage) {
if (localStorage.hasOwnProperty(obj) && obj == "myKey") {
localStorage.removeItem(obj);
}
}
并通过键删除所需的值,例如“myKey”。
【讨论】:
删除所有会话存储项:
sessionStorage.clear()
【讨论】:
试试这个:
angular.forEach(sessionStorage, function (item,key) {
sessionStorage.removeItem(key);
});
这将从 sessionStorage 中删除所有内容
【讨论】: