【问题标题】:Clear local storage but exempt certain values.清除本地存储但免除某些值。
【发布时间】:2023-03-03 12:24:02
【问题描述】:

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

【问题讨论】:

    标签: javascript


    【解决方案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/in,因为未指定 localStoragefor/in 密钥在规范中。当你 for/in 时,旧版本的 FireFox barf。我不确定以后的版本 (more info)。

    exclude 应该是您希望排除被删除的键的数组;

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

    【讨论】:

      【解决方案2】:

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

      例子:

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

      【讨论】:

      • 这几乎是我打算做的,但想看看是否有一个普遍接受的方式,好像就是这样!
      【解决方案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];
      }
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      • 2022-08-09
      • 2021-02-03
      • 1970-01-01
      • 1970-01-01
      • 2020-11-19
      • 1970-01-01
      相关资源
      最近更新 更多