Alex
Alex

Reputation: 3791

clearing objects from localstorage

with localstorage i have a load of unspecified items saved with dynamic names using a data namespace like so:

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

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

I want to keep the settings but not the data. However I won't ever know what all of the names inside of my data object are so I cannot clear them individually. I need to clear these each time my app is loaded but I must keep the settings so localstorage.clear() is not an option.

I have tried:

localstorage.removeItem("myAppName.data")

but no dice.

Anyone have any thoughts on how to clear dynamically named portions of localstorage?

Upvotes: 9

Views: 16922

Answers (4)

Dorian
Dorian

Reputation: 24009

Assuming a this.namespace present (in my case 'session') and the underscore library:

_.each(_.keys(localStorage), function(key) {
  if (RegExp("^" + this.namespace + "\\.").test(key)) {
    return localStorage.removeItem(key);
  }
});

And with CoffeeScript:

_.each _.keys(localStorage), (key) ->
  if ///^#{@namespace}\.///.test(key)
    localStorage.removeItem(key)

Upvotes: 0

Stefan
Stefan

Reputation: 5662

Tried something like this?

// Select current settings
var settings = localStorage["myAppName.settings"] || {};
// Clear localStorage
localStorage.clear();
// Add settings to localStorage
localStorage["myAppName.settings"] = settings;

Upvotes: 0

Niklas
Niklas

Reputation: 13155

You can loop through the keys in the localStorage and target them with a reg exp:

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

Here's a similar question: HTML5 Localstorage & jQuery: Delete localstorage keys starting with a certain word

Upvotes: 20

Fabrizio Calderan
Fabrizio Calderan

Reputation: 123428

try something like

var i = localStorage.length, key;
while (i--) {
  key = localStorage.key(i);
  if (key.slice(0, 19) !== "myAppName.settings.") {
    localStorage.remove(key);
  }
}

Upvotes: 2

Related Questions