javascript - 将 localStorage 转换为字符串并从中删除特定元素
问题描述
将内容导出localStorage
为字符串并从中删除特定键值对的方法是什么?
也就是说,我只需要保留那些值为like
or的键dislike
。应删除其他键。
换句话说,结果字符串应该是
"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?
}
});
我花了一天时间尝试以下链接的解决方案:
- 从 localStorage 中删除特定项目
- 如何删除 localStorage 中的特定项目/对象?
- 在 HTML5 和 JavaScript 中循环访问 localStorage
- 如何在事先不知道密钥的情况下检索所有 localStorage 项目?
- LocalStorage 和 JSON.stringify JSON.parse
但我还是想不通。
我不想更改local Storage
. 我只想将其导出为“干净”字符串。
解决方案
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"
// }
推荐阅读
- python - 切换 conda 环境需要我每次都输入 conda install tensorflow
- java - Flutter android许可接受错误
- react-native - 反应导航:使用向上滑动效果手动更改屏幕
- python - Autocad python - 从工具栏运行脚本
- python - 什么是用于删除列中所有文本的 python 正则表达式?
- algorithm - MT5 || MQL5 JYP 对交易不佳
- python - 如何将标记化的句子作为行附加到csv
- awk - 如何使用 awk 打印每列
- windows - 用于从 csv 文件的每一行中删除第一个和最后一个双引号的 Powershell 脚本
- javascript - firebase onSnapshot 如何刷新数组以避免重复键?