使用localstorage我有一大堆未指定的项目使用动态名称保存,使用数据命名空间,如下所示:
localStorage["myAppName.settings.whatever"] = something.whatever;
//and this:
localStorage["myAppName.data."+dynObj.name] = dynObj.data;
我想保留设置,但不保留数据。但是,我永远不会知道我的数据对象中的所有名称是什么,所以我无法单独清除它们。我需要在每次加载应用程序时清除这些内容,但我必须保持设置
localstorage.clear()
不是一种选择。
我试过了:
localstorage.removeItem("myAppName.data")
但没有骰子。
有人想过如何清除localstorage的动态命名部分吗?
答案 0 :(得分:20)
您可以遍历localStorage中的键,并使用reg exp:
来定位它们Object.keys(localStorage)
.forEach(function(key){
if (/^(myAppName.data.)/.test(key)) {
localStorage.removeItem(key);
}
});
这是一个类似的问题:HTML5 Localstorage & jQuery: Delete localstorage keys starting with a certain word
答案 1 :(得分:2)
尝试类似
的内容var i = localStorage.length, key;
while (i--) {
key = localStorage.key(i);
if (key.slice(0, 19) !== "myAppName.settings.") {
localStorage.remove(key);
}
}
答案 2 :(得分:0)
试过这样的事情?
// Select current settings
var settings = localStorage["myAppName.settings"] || {};
// Clear localStorage
localStorage.clear();
// Add settings to localStorage
localStorage["myAppName.settings"] = settings;
答案 3 :(得分:0)
假设this.namespace
存在(在我的情况下为'session'
)和下划线库:
_.each(_.keys(localStorage), function(key) {
if (RegExp("^" + this.namespace + "\\.").test(key)) {
return localStorage.removeItem(key);
}
});
使用CoffeeScript:
_.each _.keys(localStorage), (key) ->
if ///^#{@namespace}\.///.test(key)
localStorage.removeItem(key)