如何删除localStorage中的特定项目/对象
How to delete a specific item/object in localStorage?
原来我的localStorage["items"]将我的JSON存储为字符串。
"["{'"itemId'":1, '"itemName'":'"item1'"}", "{'"itemId'":2, '"itemName'":'"item2'"}",
"{'"'":3, '"itemName'":'"item3'"}",]"
这就是当我JSON.parse(localStorage["items"]):时的样子
["{"itemId":1, "itemName":"item1"}", "{"itemId":2, "itemName":"item2"}"
"{"itemId":3, "itemName":"item3"}"]
因此,在我的循环中,我使用jQuery.parseJSON
:将其制作成一个对象
var object = jQuery.parseJSON(item[i]);
现在,我想做的是删除itemId = 3
所在的对象,并确保该对象已从localStorage中完全删除。
到目前为止,这是我的Javascript:
$("#button_delete").on("click", function(e){
e.preventDefault();
var items = JSON.parse(localStorage.getItem('items'));
for (var i = 0; i < items.length; i++) {
var object = JSON.parse(items[i]);
if(object.request_id == 3){
console.log(items)
delete items[i] // slice doesn't work not sure why
console.log(items)
}
}
item = JSON.stringify(items);
console.log(item);
localStorage.setItem('items', item);
})
更新
当我现在点击按钮时,它会删除该项目,但不会删除之前的逗号。
当我在浏览器中检查localStorage["items"]时,它会返回以下信息:
"["{'"itemId'":1, '"itemName'":'"item1'"}","{'"itemId'":2, '"itemName'":'"item2'"}",null]"
我有另一个页面,它将在html中显示信息,并返回错误:
Uncaught TypeError: Cannot read property 'itemId' of null
。
那么,现在有没有一种方法可以在localStorage["items"]中专门检查或搜索,null
并将其删除,这样就不会显示错误了?
关于我如何在HTML中显示信息的代码:
var items = JSON.parse(localStorage.getItem('items'));
var itemsHTML = "";
for(var i = 0; i < items.length; i++){
var object = jQuery.parseJSON(items[i]);
var displayItemId = object.itemId;
var displayItemName = object.itemName;
itemsHTML += "<li id="+displayItemId+">"+displayItemName+"</li>";
}
$("#viewItemList").html(itemsHTML);
所有答案都是对的,但您必须:
- 将localStorage中的字符串解析为JSON(您已经这样做了)
- 删除您不想要的项目(使用slice())
- 将JSON转换为字符串
- 在本地存储中重新设置
因此:
1.
var items = JSON.parse(localStorage.getItem("items")); // updated
2.
for (var i =0; i< items.length; i++) {
var items = JSON.parse(items[i]);
if (items.itemId == 3) {
items.splice(i, 1);
}
}
3.
items = JSON.stringify(items); //Restoring object left into items again
4.
localStorage.setItem("items", items);
解析JSON并将其存储为字符串有点烦人,但localStorage就是这样工作的
试试这个。
$("#button_delete").on("click", function(e){
e.preventDefault();
var items = JSON.parse(localStorage["items"]);
for (var i = 0; i < items.length; i++) {
if(items[i].itemId == 3){
items.splice(i,1);
break;
}
}
})
如果你知道特定项目的key
,那么就这样简单明了:
if (localStorage.getItem('key_to_remove') != null)
localStorage.removeItem('key_to_remove');
本地存储只能包含字符串
因此,首先你必须从本地存储解析项目(就像你现在做的那样)
从中删除你不想要的元素。
再次将其序列化为JSON并存储在本地存储中。
以下是的方法
var items = localStorage["items"];
for (var i =0; i< items.length; i++) {
var item = JSON.parse(items[i]);
if (item.itemId == 3) {
items.slice(i);
break;
}
}
// Don't forget to store the result back in localStorage
localStorage.setItem("items", items);
eliminar(est: string) {
//estudiantes ES LA KEY
var items = JSON.parse(localStorage.getItem('estudiantes'));
for (var i = 0; i < items.length; i++) {
var item = items[i];
if(item.id == est){
items.splice(i,1);
}
}
items = JSON.stringify(items);
localStorage.setItem('estudiantes', items);
this.getAll();
}
相关文章:
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 按不同项目对对象数组进行排序
- 原始javascript将json对象中的项目打印到列表中的屏幕上
- 如何通过迭代对象数组来删除某些项目
- 在 JavaScript 对象中添加子对象时获取“无法设置未定义的属性'项目'”
- Javascript:从数组中删除包含带有侦听器的对象的项目的最佳方法
- M项目2:是否可以从DOM对象中获取M视图
- 范围$手表项目doens'不适用于javascript对象的字段
- 从jQuery数组或元素的对象列表中选择第N个项目
- AngularJS ForEach将新项目推送到对象中
- 如何删除localStorage中的特定项目/对象
- Javascript 如何将项目推送到存储在对象中的数组中
- 在单击选项卡式项目时隐藏和创建另一个对象 - HTML CSS
- 下划线.js,从一个对象中获取两个项目并添加到顶部
- JS深度比较2个对象并删除在第二个对象中找到的项目,而不是第一个
- 对对象数组中的项目进行分组和排序
- JavaScript 将项目添加到对象的开头
- Javascript -项目对象数组
- 删除项目对象javascript
- 如何使用AJAX显示/打印从数据库中获取的每个项目/对象的属性名称