清除localstorage中的对象

时间:2012-03-05 12:01:18

标签: javascript html5 local-storage

使用localstorage我有一大堆未指定的项目使用动态名称保存,使用数据命名空间,如下所示:

localStorage["myAppName.settings.whatever"] = something.whatever; 

//and this:
localStorage["myAppName.data."+dynObj.name] = dynObj.data;

我想保留设置,但不保留数据。但是,我永远不会知道我的数据对象中的所有名称是什么,所以我无法单独清除它们。我需要在每次加载应用程序时清除这些内容,但我必须保持设置 localstorage.clear()不是一种选择。

我试过了:

localstorage.removeItem("myAppName.data")

但没有骰子。

有人想过如何清除localstorage的动态命名部分吗?

4 个答案:

答案 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)
相关问题