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

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

我需要添加另一个“元素”。我的第一步是使用cart = json将该json放入Object类型中。解析,现在我需要添加新的元素。 我想我必须使用手推车。push添加另一个元素,我尝试了这个:

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

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

我该怎么做呢?

编辑:对不起,我的脑子里有很多混乱。

我认为我只能从JSON中获取数据时的对象类型。解析,但我得到了我放在JSON的第一个地方。

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


当前回答

这是一个老问题,无论如何,今天的最佳实践是使用Object.defineProperty

const object1 = {};

Object.defineProperty(object1, 'property1', {
  value: 42,
  writable: false
});

object1.property1 = 77;
// throws an error in strict mode

console.log(object1.property1);
// expected output: 42

其他回答

Push是数组的一个方法,所以对于object,你可以得到最后一个元素的索引,你可以做和下面Push for object相同的工作

var lastIndex = Object.keys(element)[Object.keys(element).length-1];

然后将object添加到element的新索引中

element[parseInt(lastIndex) +1] = { id: id, quantity: quantity };

var newObject = {element:{"id":10,"quantity":1}}; console . log (newObject);

你应该写var element = []; 在javascript中,{}是一个空对象,[]是一个空数组。

如果你不设计在JS中做循环,例如传递给PHP为你做循环

let decision = {}
decision[code+'#'+row] = event.target.value

这个概念可能会有所帮助

你的元素不是一个数组,但是你的购物车需要是一个数组以支持许多元素对象。代码示例:

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

如果你希望cart是一个对象数组,格式为{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}]"