清除本地存储但豁免某些值。

时间:2014-04-16 15:22:04

标签: javascript

有没有办法清除window.localStorage,window.localStorage.clear();但是免除某些键/值对?

3 个答案:

答案 0 :(得分:6)

不,但您可以在变量中保存所需的值,然后清除localStorage,然后再次将存储在变量中的项目添加到其中。

示例:

var myItem = localStorage.getItem('key');
localStorage.clear();
localStorage.setItem('key',myItem);

答案 1 :(得分:3)

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];
}

答案 2 :(得分:1)

您可以手动执行此操作;

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/infor/in localStorage规范中未指定1}}密钥。 for/in时较旧版本的FireFox barf。我不确定以后的版本(more info)。

exclude应该是您希望排除的一系列密钥;

clearLocalStorage(["foo", "bar"]);