Javascript 从本地存储中清除对象
在localstorage中,我使用如下数据命名空间以动态名称保存了大量未指定的项:Javascript 从本地存储中清除对象,javascript,html,local-storage,Javascript,Html,Local Storage,在localstorage中,我使用如下数据命名空间以动态名称保存了大量未指定的项: localStorage["myAppName.settings.whatever"] = something.whatever; //and this: localStorage["myAppName.data."+dynObj.name] = dynObj.data; 我想保留设置,但不保留数据。然而,我永远都不知道我的数据对象中的所有名称是什么,所以我无法单独清除它们。每次加载我的应用程序时,我都需
localStorage["myAppName.settings.whatever"] = something.whatever;
//and this:
localStorage["myAppName.data."+dynObj.name] = dynObj.data;
我想保留设置,但不保留数据。然而,我永远都不知道我的数据对象中的所有名称是什么,所以我无法单独清除它们。每次加载我的应用程序时,我都需要清除这些设置,但我必须保留这些设置,以便
localstorage.clear()
不是选项
我试过:
localstorage.removeItem("myAppName.data")
但是没有骰子
有人想过如何清除本地存储的动态命名部分吗?试试类似的方法
var i = localStorage.length, key;
while (i--) {
key = localStorage.key(i);
if (key.slice(0, 19) !== "myAppName.settings.") {
localStorage.remove(key);
}
}
您可以循环本地存储中的密钥,并使用reg exp将它们作为目标:
Object.keys(localStorage)
.forEach(function(key){
if (/^(myAppName.data.)/.test(key)) {
localStorage.removeItem(key);
}
});
这里有一个类似的问题:尝试过这样的东西吗
// Select current settings
var settings = localStorage["myAppName.settings"] || {};
// Clear localStorage
localStorage.clear();
// Add settings to localStorage
localStorage["myAppName.settings"] = settings;
假设存在
this.namespace
(在我的例子中是'session'
)和下划线库:
_.each(_.keys(localStorage), function(key) {
if (RegExp("^" + this.namespace + "\\.").test(key)) {
return localStorage.removeItem(key);
}
});
还有咖啡脚本:
_.each _.keys(localStorage), (key) ->
if ///^#{@namespace}\.///.test(key)
localStorage.removeItem(key)
很遗憾,localStorage没有将名称空间作为基本API的一部分。同时,还有一个问题:它应该是localStorage.clear(),而不是带有小s的localStorage。因为
匹配任何字符,所以regexmyAppName.data。
需要转义:myAppName\.data\。
。