向对象添加元素

新手上路,请多包涵

我需要填充一个 json 文件,现在我有这样的东西:

 {"element":{"id":10,"quantity":1}}

我需要添加另一个“元素”。我的第一步是使用 cart = JSON.parse 将该 json 放入 Object 类型,现在我需要添加新元素。

我想我必须使用 cart.push 添加另一个元素,我试过这个:

 var element = {};
 element.push({ id: id, quantity: quantity });
 cart.push(element);

但是当我尝试执行 element.push 时出现错误“对象没有方法推送”,我认为我做错了什么,因为我没有在任何地方告诉“元素”。

我怎样才能做到这一点?

编辑: 对不起,我脑子里有很多困惑。

我以为从 JSON.parse 获取数据时只能获取对象类型,但我首先得到了放入 JSON 中的内容。

用数组代替对象解决了我的问题,我在这里也使用了很多建议,谢谢大家!

原文由 HypeZ 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 980
2 个回答

您的元素不是数组,但是您的购物车需要是数组才能支持许多元素对象。代码示例:

 var element = {}, cart = [];
 element.id = id;
 element.quantity = quantity;
 cart.push(element);

如果您希望购物车成为 { element: { id: 10, quantity: 1} } 形式的对象数组,则执行:

 var element = {}, cart = [];
 element.id = id;
 element.quantity = quantity;
 cart.push({element: element});

JSON.stringify() 在评论中被提及为关注点:

 >> JSON.stringify([{a: 1}, {a: 2}])
 "[{"a":1},{"a":2}]"

原文由 Konstantin Dinev 发布,翻译遵循 CC BY-SA 3.0 许可协议

我的建议是使用其他答案中已经提出的不同数据结构 - 它允许您推送 card.elements 并允许扩展卡属性:

 let card = {
 elements: [
 {"id":10,"quantity":1}
 ],

 //other card fields like 'owner' or something...
 }

 card.elements.push({"id":22,"quantity":3})

 console.log(card);

原文由 Kamil Kiełczewski 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题