我有一个存储在本地存储中的json字符串,它看起来像这样:
{
"cart":[
{
"tuote":{
"id":"1",
"name":"Rengas 1",
"count":"2",
"price":"8"
}
},
{
"tuote":{
"id":"2",
"name":"Rengas 2",
"count":"4",
"price":"8"
}
},
{
"tuote":{
"id":"3",
"name":"Rengas 3",
"count":"4",
"price":"8"
}
}
]
}
所以,假设我要删除 Rengas 2 ,ID 2 (在这种情况下,它是中间的。)
我知道,我可以使用拼接并像这样做
myJson.splice(2,1);
但是如果我在数组中有数百个项目怎么办?
而且我不知道我要移除哪一个(在这种情况下单击按钮会删除该项目),我该怎么做?
因此,如果我想删除我点击的项目,在这种情况下。
答案 0 :(得分:0)
您可以从本地提取JSON并将其分配给变量
var myObject = JSON.parse(localStorage.getItem("yourKey"));
迭代您要查找的媒体资源:
var id = 2;
for (var i = 0; i < myObject.cart.length; i++) {
if (myObject.cart[i].tuote.id == id) {
myObject.cart[i].splice(i, 1);
//break; //only use if you want to kill the loop after the first found result
}
}
splice
!
答案 1 :(得分:0)
假设一次只删除一个元素:
var pos = -1;
var cart = myJson.cart;
for (var i = 0; i < cart.length; i++) {
if (cart[i].tuote.name == "Rengas 2") {
pos = i;
break;
}
}
if (pos > -1) {
cart.splice(pos, 1);
}
答案 2 :(得分:0)
您可以撤消条件并使用jQuery.grep()
:
var toRemove = 'Rengas 2';
data.cart = $.grep(data.cart, function(item) {
return item.name != toRemove;
});
如果您已经在使用本机存储,则可以使用[].filter()
答案 3 :(得分:0)
如果您可以重新构建数据,此设计可能会更好地支持您尝试执行的操作:
{
"cart":{
"1":{
"tuote":{
"id":"1",
"name":"Rengas 1",
"count":"2",
"price":"8"
}
},
"2":{
"tuote":{
"id":"2",
"name":"Rengas 2",
"count":"4",
"price":"8"
}
},
"3":{
"tuote":{
"id":"3",
"name":"Rengas 3",
"count":"4",
"price":"8"
}
}
}
}
添加其他项目:
var newObj = {
"tuote":{
"id":"7",
"name":"Rengas 1",
"count":"2",
"price":"8"
};
...
myJSON[newObj.toute.id] = newObj;
删除特定项目:
myJSON[7] = undefined;
要使其工作,您只需将每个ID存储在表行中,以便在尝试删除时获取ID。