将 localStorage 转换为字符串并从中删除特定元素

Convert localStorage as string and remove specific elements from it

如何将 localStorage 的内容导出为字符串并从中删除特定的键值对?

也就是说,我只需要保留那些值为likedislike的键。应删除其他密钥。

换句话说,结果字符串应该是

"anne":"dislike","jane":"like","john":"like","mike":"dislike"
// the order doesn't matter
localStorage.clear();
localStorage.setItem('anne', 'dislike');
localStorage.setItem('jane', 'like');
localStorage.setItem('john', 'like');
localStorage.setItem('mike', 'dislike');
localStorage.setItem('abcd', 'foo');
localStorage.setItem('efgh', 'bar');

// this may be useful for something . . .
const stringified = JSON.stringify(localStorage);

Object.keys(localStorage).forEach(function(key) {
  const value = localStorage.getItem(key);
  if (value === 'like' || value === 'dislike') {
    // what should be here?
  }
});

我花了一天时间从以下链接尝试解决方案:

可是我还是想不通

我不想更改local Storage的原始内容。我只想将其导出为“干净”的字符串。

你应该

// if values is not equal to string 'like' or string 'dislike'
if (value !== 'like' || value !== 'dislike') {
  // if not equal to those, remove the item with this key name (key)
  localStorage.removeItem(key);
}

尝试使用

localStorage.removeItem('name');

localStorage.clear();
localStorage.setItem('anne', 'dislike');
localStorage.setItem('jane', 'like');
localStorage.setItem('john', 'like');
localStorage.setItem('mike', 'dislike');
localStorage.setItem('abcd', 'foo');
localStorage.setItem('efgh', 'bar');

// this may be useful for something . . .
const stringified = JSON.stringify(localStorage);


var res = {};

Object.keys(localStorage).forEach(function(key) {
  const value = localStorage.getItem(key);
  if (value === 'like' || value === 'dislike') {
    res[key] = value;
  }
});

console.log(res);

localStorage 以字符串格式保存数据,您必须将其转换为对象才能检索它

const value = localStorage.getItem(key);
value = JSON.parse(value);
console.log("value",value); //to check current value of object in console

我认为这可能有用

localStorage.clear()
localStorage.setItem('anne', 'dislike')
localStorage.setItem('jane', 'like')
localStorage.setItem('abcd', 'foo')
localStorage.setItem('efgh', 'bar')

function getStorage() {
  const data = {}
  let i = localStorage.length
  while (i--) {
    let key = localStorage.key(i)
    let value = localStorage.getItem(key)
    if (/^(like|dislike)$/i.test(value)) {
      data[key] = value
    }
  }
  return data
}

console.log(getStorage())
// {
//   anne: "dislike",
//   jane: "like"
// }