向对象添加元素

2022-08-30 00:09:22

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

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

我需要添加另一个“元素”。我的第一步是使用 将该json放入对象类型中,现在我需要添加新元素。我想我必须使用来添加另一个元素,我尝试了这个:cart = JSON.parsecart.push

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

但是当我尝试做时,我得到了错误“对象没有方法推送”,我认为我正在做一些非常错误的事情,因为我没有在任何地方告诉“元素”。element.push

我该怎么做?

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

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

把数组而不是对象解决了我的问题,我也使用了很多建议,谢谢大家!


答案 1

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

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}]" 

答案 2

下面的代码行定义为普通对象。element

let element = {}

这种类型的JavaScript对象与周围的它没有方法。若要向类似如下的对象添加新项,请使用以下语法:{}push()

element[yourKey] = yourValue

要将它们放在一起,请参阅下面的示例:

let element = {} // make an empty object

/* --- Add Things To The Object --- */

element['active'] = true // 'active' is the key, and 'true' is the value
console.log(element) // Expected result -> {type: true}


element['state'] = 'slow' // 'state' is the key and 'slow' is the value
console.log(element) // Expected result -> {type: true, state: 'slow'}

另一方面,如果您将对象定义为数组(即使用而不是 ),则可以使用该方法添加新元素。[]{}push()