使用javascript比较和删除json数据

时间:2014-06-23 18:43:01

标签: javascript json

以下是我的json代码:

{
    "uID": "4564646",
    "favorites": [

        {   "name" : "my store",
            "id" : "87654321",
            "items": 
            [
                { 
                    "productID": "46565",
                    "title": "Project",
                    "type": "Weekend Project"
                },

                { 
                    "productID": "112",
                    "title": "Bathroom",
                    "type": "Weekend Project"
                },


                { 
                    "productID": "785",
                    "title": "link",
                    "type": "main Project"
                }

            ]
        }

    ]
} 

现在,我想检查每个产品的PRODUCTID,并从与我的产品ID 112匹配的商品中删除该条目。 我只想使用javascript,数组项不是固定的,我还必须在应用删除方法之前解析json。

2 个答案:

答案 0 :(得分:2)

var obj = JSON.parse(json_string);
var fav_items = obj.favorites[0].items;
for (var i = fav_items.length - 1; i >= 0; i--) {
    if (fav_items[i].productID == 112) {
        fav_items.splice(i, 1);
    }
}

请注意,您需要向后执行循环,因为当您从数组中拼出一个元素时,它之后的所有元素都会向下移动索引。如果你执行一个正常的向上循环,你将跳过删除后的元素。

答案 1 :(得分:0)

只是做:

for (var i = 0; i < data.favorites[0].items.length; i++) {
    if (data.favorites[0].items[i].productID != 112) {
        data.favorites[0].items.splice(i, 1); 
        i--; //DONT FORGET THIS
    }
}

splice可以删除数组元素 - 不要忘记i--但是当在循环中拼接时,因为数组有可能在每次迭代时缩短。