gpt4 book ai didi

javascript - 不要删除本地存储的所有键

转载 作者:数据小太阳 更新时间:2023-10-29 04:16:33 26 4
gpt4 key购买 nike

在我的应用程序中,我希望立即删除本地存储的所有键,但包含单词“wizard”的所有键除外。

命令如

localstorage.clear(); 

将删除所有内容,我只想保留那些带有“向导”一词的内容,我已经尝试过这种方式,但出现错误,因为如果我删除匹配项,在下一次迭代中将跳过一个键,我会收到错误,试图在现在为空的位置搜索匹配项,因为它已被删除。我该如何解决?

这是我的代码:

for ( var i = 0, len = localStorage.length; i < len; ++i ) {
//if the key not contain the word "wizard" will be erased
if( localStorage.getItem(localStorage.key(i)).search("wizard")==-1){
localstorage.removeItem( localStorage.getItem( localStorage.key( i ) ) );
}
}

最佳答案

您可以遍历 localStorageentries,如果值包含 wizard 则删除键:

localStorage.foo = 'foo';
localStorage.bar = 'wizard1';
localStorage.baz = 'wizard2';
localStorage.buzz = 'buzz';

Object.entries(localStorage).forEach(([key, val]) => {
if (!val.includes('wizard')) delete localStorage[key];
});
console.log(Object.keys(localStorage));

结果:只有 barbaz 键会保留。

(无法作为嵌入式代码段发布,因为堆栈代码段不支持 localStorage)

https://jsfiddle.net/cLm3kg01/

如果您想保留包含 wizardkey names 而不是包含 wizardvalues,则使用Object.keys 而不是 Object.entries 来迭代键:

localStorage.wizard1 = 'foo';
localStorage.wizard2 = 'bar';
localStorage.baz = 'baz';
localStorage.buzz = 'buzz';

Object.keys(localStorage).forEach((key) => {
if (!key.includes('wizard')) delete localStorage[key];
});
console.log(Object.keys(localStorage));

https://jsfiddle.net/cLm3kg01/6/

关于javascript - 不要删除本地存储的所有键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52124794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com