向空的JSON数组添加元素和删除元素

4

我已经创建了一个空的 JSON 对象,其中包含一个数组 itemlist(该数组又包含一个项目的 itemid 和 title):

var jsonObj = {};
jsonObj.itemlist=[];
jsonObj.itemlist.push({});

首先,我是否正确地完成了声明?

其次,标题和itemid是动态生成的,因此我需要将它们添加到itemlist数组中。我尝试过这个方法,但只保留了一个数组元素:

jsonObj.itemlist['title']=gentitle;
jsonObj.itemlist['itemid']=genitemid;

如何在一个空的itemlists数组中添加多个元素(不是一次性添加全部元素)?
另外,我还需要根据元素的标题删除特定的数组元素。如何实现?我认为splice和delete函数可以用于此操作,但是如何找到该元素的索引?
1个回答

6

因为你已经将一个空对象推入数组中,所以你需要修改该对象:

jsonObj.itemlist[0]['title']=gentitle;
jsonObj.itemlist[0]['itemid']=genitemid;

要添加更多的对象,您可以做同样的事情:推入一个空对象,然后修改该对象。或者,您可以创建一个对象,修改它,然后将其推入列表中。
var new_obj = {'title':gentitle, 'itemid':genitemid};
jsonObj.itemlist.push( new_obj );

删除具有某个属性值的对象:

for (var i = jsonObj.itemlist.length-1; i >= 0; i--)
    if(jsonObj.itemlist[i]['title'] == "to-be-removed")
        jsonObj.itemlist.splice(i,1);

请注意需要向后移,否则 splice 会破坏数组索引。

该数组应该有更多的元素。并且添加元素应该是自动的,就像在线购物车一样。仅添加一个元素无法解决我的问题。如果需要添加多个元素,我该怎么办? - Vatsal Juneja
推送工作正常...谢谢! :) 你能告诉我如何通过匹配数组元素的标题来删除要删除的元素吗? - Vatsal Juneja
@VatsalJuneja 再次更新了.. 这应该足够回答这个问题了。 - xvatar
完全足够了。删除很容易,我想我只是不够自信去思考...谢谢 :) - Vatsal Juneja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接