删除数组中的json

时间:2014-03-03 21:02:35

标签: javascript jquery json

我有一个存储在本地存储中的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);

但是如果我在数组中有数百个项目怎么办?

而且我不知道我要移除哪一个(在这种情况下单击按钮会删除该项目),我该怎么做?


因此,如果我想删除我点击的项目,在这种情况下。

this

4 个答案:

答案 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。