清除JavaScript中的localStorage?


Answers:


1371

使用此命令清除localStorage:

localStorage.clear();

6
@BakedInhalf一点也不。也许您的应用再次设置了它?
destan 2014年

5
当我的应用程序启动时,我调用localStorage.clear(),但是即使关闭浏览器,清除缓存等,数据仍然存在。我知道这一点是因为我已在模型上将“实例”属性设置为初始化时的随机数,并且对于给定的ID,实例属性始终是相同的。
sydneyos 2014年

11
@ digital-plane是否会从特定域或所有存储中清除本地存储?
crisron 2015年

18
clear()将从您所在的特定域中删除所有localStorage键和值。由于CORS,Javascript无法从任何其他域获取localStorage值。
Fizzix

1
@BakedInhalf是正确的,它将一直保持到您硬刷新页面为止。当您清除localStorage并立即填充它时,它会还原以前的内容并向其中添加新项。当您清除localStorage并进行硬刷新时,它为空,您可以再次开始填充它。
网路

198

如果要从用户的本地存储中删除特定的项目或变量,可以使用

localStorage.removeItem("name of localStorage variable you want to remove");

1
嗨,@Ajeet如果我不想删除特定的物品,那还有办法吗?例如“ removeItemNotIn(key)”,“删除除已定义键以外的所有键”?提前致谢。
Me_developer '18

嗨,@Shadow如果我不想删除特定的物品,那还有办法吗?例如“ removeItemNotIn(key)”,“删除除已定义键以外的所有键”?提前致谢。
Me_developer

我想出了解决问题的方法:-if(localStorage.getItem(particularKey)== null){localStorage.clear(); }但是,如果您有更好的解决方案,请告诉我。谢谢。
Me_developer 18'Apr

1
@learner因此,您想删除除特定键之外的所有键,对吗?为此,您可以执行以下操作 var key; for (var i = 0; i < localStorage.length; i++) { key = localStorage.key(i); if(key != particularKey){ localStorage.removeItem(key); } }
Ajeet Lakhani

1
也可以:获取值,再次清除并设置值,用途更多。let tmp = localStorage.getItem('<your-name>'); localStorage.clear(); localStorage.setItem('<your-name>')
Michael B.


11

这是一个允许您删除所有localStorage项目的函数,但有例外。您需要此功能的jQuery。您可以下载要点

你可以这样称呼它

let clearStorageExcept = function(exceptions) {
  let keys = [];
  exceptions = [].concat(exceptions); // prevent undefined

  // get storage keys
  $.each(localStorage, (key) => {
    keys.push(key);
  });

  // loop through keys
  for (let i = 0; i < keys.length; i++) {
    let key = keys[i];
    let deleteItem = true;

    // check if key excluded
    for (let j = 0; j < exceptions.length; j++) {
      let exception = exceptions[j];
      if (key == exception) {
        deleteItem = false;
      }
    }

    // delete key
    if (deleteItem) {
      localStorage.removeItem(key);
    }
  }
};

1
奇怪的是,undefined是一个有效的密钥setItemgetItem
ebob

@ebob是的,看起来似乎很奇怪,但是不,实际上不是。localStorage的功能类似于对象,因为键被转换为字符串。例如,使用undefined作为这样的键:localStorage.setItem(undefined, 'example Txt!'),它将实际存储在名为'undefined'以下运行时所看到的键下。console.log(localStorage.getItem('undefined')) 将输出example Txt!
杰克·吉芬

8

本地存储附加在全局存储上window。当我们在chrome devtools中登录localstorage时,我们看到它具有以下API:

在此处输入图片说明

我们可以使用以下API删除项目:

  1. localStorage.clear():清除整个本地存储
  2. localStorage.removeItem('myItem'):删除单个项目

4

首先,您需要检查以确保启用了localStorage。我建议这样做:

var localStorageEnabled = false;
try { localStorageEnabled = !!localStorage; } catch(e) {};

是的,您可以(在某些情况下)仅检查localStorage是否为窗口对象的成员。但是,有iframe沙箱选项(除其他外),即使您尝试访问索引“ localStorage”,也会引发异常。因此,出于最佳实践的原因,这是检查是否启用了localStorage的最佳方法。然后,您可以像这样清除localStorage。

if (localStorageEnabled) localStorage.clear();

例如,您可以在类似Webkit的浏览器中发生错误后清除localStorage。

// clears the local storage upon error
if (localStorageEnabled)
  window.onerror = localStorage.clear.bind(localStorage);

在上面的示例中,您需要使用,.bind(window)因为没有它,该localStorage.clear函数将在window对象的上下文中运行,而不是使localStorage对象默默地失败。为了证明这一点,请看下面的例子:

window.onerror = localStorage.clear;

是相同的:

window.onerror = function(){
    localStorage.clear.call(window);
}

3

如果要清除存储在localStorage中的所有项目,则

localStorage.clear();

使用此清除所有存储的密钥。

如果您只想清除/删除特定的键/值,则可以使用removeItem(key)

localStorage.removeItem('yourKey');

2
localStorage.clear();

要么

window.localStorage.clear();

清除特定项目

window.localStorage.removeItem("item_name");

要通过id删除特定值:

var item_detail = JSON.parse(localStorage.getItem("key_name")) || [];           
            $.each(item_detail, function(index, obj){
                if (key_id == data('key')) {
                    item_detail.splice(index,1);
                    localStorage["key_name"] = JSON.stringify(item_detail);
                    return false;
                }
            });


0

这是一个简单的代码,将使用javascript清除存储在浏览器中的本地存储

    <script type="text/javascript">

if(localStorage) { // Check if the localStorage object exists

    localStorage.clear()  //clears the localstorage

} else {

    alert("Sorry, no local storage."); //an alert if localstorage is non-existing
}

</script>

要确认localstorage是否为空,请使用以下代码:

<script type="text/javascript">

// Check if the localStorage object exists
if(localStorage) {

    alert("Am still here, " + localStorage.getItem("your object name")); //put the object name
} else {
    alert("Sorry, i've been deleted ."); //an alert
}

</script>

如果返回null,则将清除您的本地存储。


0

此处的代码为您提供了不想删除的密钥字符串列表,然后从本地存储中的所有密钥中筛选出这些密钥,然后删除其他密钥。

const allKeys = Object.keys(localStorage);

const toBeDeleted = allKeys.filter(value => {
  return !this.doNotDeleteList.includes(value);
});

toBeDeleted.forEach(value => {
  localStorage.removeItem(value);
});
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.