如何删除从某个字符串开始的localStorage数据

How to remove localStorage data starting with a certain string?

本文关键字:字符串 开始 数据 localStorage 何删除 删除      更新时间:2023-09-26

我想删除firebase相关的localStorage。我试过了:

  let arr = [] // Array to hold the keys
  // Iterate over localStorage and insert the keys that meet the condition into arr
  for (let i = 0; i < localStorage.length; i++) { // eslint-disable-line
    console.log(localStorage.key(i)) // eslint-disable-line
    if (localStorage.key(i).substring(0,3) == 'firebase:') { // eslint-disable-line
      arr.push(localStorage.key(i)) // eslint-disable-line
    }
  }
  // Iterate over arr and remove the items by key
  for (let i = 0; i < arr.length; i++) {
    localStorage.removeItem(arr[i]) // eslint-disable-line
  }

然而,它们根本没有被删除。

我做错了什么?

你不需要使用任何额外的数组和循环。

for (key in localStorage) {
  if (key.substring(0,9) == 'firebase:') {
    localStorage.removeItem(key);
  }
}
substring(0,3) == 'firebase:'

这绝不可能是真的。你得到一个3个字符长的字符串,并将其与"firebase:"进行比较。把3改成9,就像这样:

substring(0, 9) == 'firebase:'

JS

必须指定以0开头的共9个字符

 localStorage.setItem("abc" , "heelo");
       localStorage.setItem("abc2" , "firebase:")
        for (obj in localStorage) {
      if (localStorage[obj].substring(0,9) == 'firebase:') {
        localStorage.removeItem(obj);
      }
    }
    console.log(localStorage)