我正在动态创建localstorage,如下所示
window.localStorage["DBname"+count]=JSON.stringify(values)
同时我也在创建一些其他本地存储,如
window.localStorage["login_detail"]=login_string
window.localStorage["page_config"]=page_config
所以我不能使用window.localStorage.clear()
,因为它会清除我不想要的所有本地存储,而且我也不能使用窗口。localStorage.removeItem["DBname"+count]
因为我知道有多少"计数& #34;执行时会来。
那么有什么办法可以删除localstorage这样的组删除类吗?帮助我。
答案 0 :(得分:2)
var prefix = "DBname",
continue = true,
on = 0;
while (continue) {
continue = localStorage.getItem(prefix + on)?true:false;
try { localStorage.removeItem(prefix + on); } catch (e) { continue = false; }
on += 1;
}
这将删除以DBname
开始:
结束:
var keys = Object.keys(localStorage),
prefix = "DBname";
for (var i = 0; i < keys.length; i += 1) {
if (keys[i].indexOf(prefix) === 0) {
localStorage.removeItem(keys[i]);
}
}
开始:
结束:
添加以下一行:
Object.keys||(Object.keys=function(r){var e=[];for(var n in r)r.hasOwnProperty(n)&&e.push(n);return e});
这样,您就可以在几乎所有浏览器上使用更好的解决方案。
答案 1 :(得分:0)
我想您可以遍历LocalStorage
中的所有元素,并找到您想要逐个删除的键。
一个简单的例子是:
function clearLocalStorageByKeyMatch(word) {
// Find items in the array where he key contains the word 'word'
var filtered = localStorage.filter(function(item, key) {
return key.indexOf(word) > -1;
});
Object.keys(filtered).forEach(function(item) {
localStorage[item] = null;
});
}
// clear localStorage where config word appear
// clearLocalStorageByKeyMatch('config');
您还可以查看为您处理此问题的库。
答案 2 :(得分:0)
通过localStorage键/项目进行迭代 - 否
迭代所有localStorage密钥并不是一个好的解决方案。由于localStorage也可以被其他应用程序使用,因此迭代localStorage中的所有项目然后删除它们是非常低效的。
什么是最佳方法
由于您是应用程序的所有者,因此最好能够维护计数。在粗略的层面上,你可以保持&#34;计数&#34;你想在将来删除,可能是localStorage本身的count的开始和结束位置。
一旦你知道了开始&amp;结束限制&#34;计数&#34; - 迭代并删除所有&#34; DbName + Count&#34;在localStorage中找到。
另一种解决方法
您可以将一个实体作为应用程序的JSON对象。可以想一想,因为你是所有localStorage项目的名称,并将所有这些项目封装在一个变量中。
var myApp={
"Dbname1":{},
"Dbname2":{},
"login_detail":{},
"page_config":{}
};
将其保存到localStorage:
localStorage["myApp"]=JSON.stringify(myApp);
用于检索它:
var myApp=JSON.parse(localStorage["myApp"]);
//now you can delete whatever db you want from `myApp` and save it back to localStorage.
这将使您的代码远离其他应用程序。