【发布时间】:2023-03-03 12:24:02
【问题描述】:
有没有办法清除 window.localStorage 即window.localStorage.clear(); 但免除某些键/值对?
【问题讨论】:
标签: javascript
有没有办法清除 window.localStorage 即window.localStorage.clear(); 但免除某些键/值对?
【问题讨论】:
标签: javascript
您可以手动执行此操作;
function clearLocalStorage(exclude) {
for (var i = 0; i < localStorage.length; i++){
var key = localStorage.key(i);
if (exclude.indexOf(key) === -1) {
localStorage.removeItem(key);
}
}
}
请注意,我故意采用冗长的方法来迭代 localStorage 的长度并检索匹配的密钥,而不是简单地使用 for/in,因为未指定 localStorage 的 for/in 密钥在规范中。当你 for/in 时,旧版本的 FireFox barf。我不确定以后的版本 (more info)。
exclude 应该是您希望排除被删除的键的数组;
clearLocalStorage(["foo", "bar"]);
【讨论】:
不可以,但是您可以将所需的值保存在变量中,然后清除localStorage,然后将存储在变量中的项目再次添加到其中。
例子:
var myItem = localStorage.getItem('key');
localStorage.clear();
localStorage.setItem('key',myItem);
【讨论】:
是的。
for( var k in window.localStorage) {
if( k == "key1" || k == "key2") continue;
// use your preferred method there - maybe an array of keys to exclude?
delete window.localStorage[k];
}
【讨论】: