очистка объектов из местного хранилища - PullRequest
9 голосов
/ 05 марта 2012

с помощью localalstorage У меня есть набор неуказанных элементов, сохраненных с динамическими именами с использованием пространства имен данных, например:

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

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

Я хочу сохранить настройки, но не данные. Однако я никогда не узнаю, каковы все имена внутри моего объекта данных, поэтому я не могу очистить их по отдельности. Мне нужно очищать их каждый раз, когда мое приложение загружается, но я должен сохранить настройки так localstorage.clear() не вариант.

Я пробовал:

localstorage.removeItem("myAppName.data")

но без игры в кости.

У кого-нибудь есть мысли о том, как очистить динамически именованные части локального хранилища?

Ответы [ 4 ]

20 голосов
/ 05 марта 2012

Вы можете перебирать ключи в localStorage и назначать их с помощью reg exp:

Object.keys(localStorage)
      .forEach(function(key){
           if (/^(myAppName.data.)/.test(key)) {
               localStorage.removeItem(key);
           }
       });  

Вот похожий вопрос: HTML5 Localstorage & jQuery: Удалить ключи localalstorage, начинающиеся с определенного слова

2 голосов
/ 05 марта 2012

попробуйте что-то вроде

var i = localStorage.length, key;
while (i--) {
  key = localStorage.key(i);
  if (key.slice(0, 19) !== "myAppName.settings.") {
    localStorage.remove(key);
  }
}
0 голосов
/ 19 января 2017

Принимая 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)
0 голосов
/ 05 марта 2012

пробовал что то подобное?

// Select current settings
var settings = localStorage["myAppName.settings"] || {};
// Clear localStorage
localStorage.clear();
// Add settings to localStorage
localStorage["myAppName.settings"] = settings;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...