Reputation: 3791
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
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
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
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
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