Javascript 从本地存储中清除对象

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中,我使用如下数据命名空间以动态名称保存了大量未指定的项:

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。因为
匹配任何字符,所以regex
myAppName.data。
需要转义:
myAppName\.data\。