我需要填充一个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的第一个地方。

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


当前回答

为了防止其他人需要这个,我终于找到了一个添加对象或对象数组的好方法:

var myobj = {}

// These two options only work for single-valued keys, not arrays or objects
myobj["a"] = 1
myobj.b = 2

// This one works for everyting:
Object.assign(myobj, {"key": "value"});  // single-value

// Add object
Object.assign(myobj, {"subobj": 
  {
    "c": 3
  }
});

// Add array of objects
Object.assign(myobj, {"subarr": 
  [
    {
      "d": 4,
    },
    {
      "e": 5
    }
  ]
}); 

其他回答

试试这个:

var data = [{field:"Data",type:"date"},  {field:"Numero",type:"number"}];

var columns = {};

var index = 0;

$.each(data, function() {

    columns[index] = {
        field : this.field,
        type : this.type
    };

    index++;
});

console.log(columns);

如果购物车必须存储为对象而不是数组(尽管我建议存储为[]),你总是可以改变结构,使用ID作为键:

var element = { quantity: quantity };
cart[id] = element;

这允许你像这样添加多个项目到购物车:

cart["1"] = { quantity: 5};
cart["2"] = { quantity: 10};

// Cart is now:
// { "1": { quantity: 5 }, "2": { quantity: 10 } }

我正在阅读一些与此相关的东西,如果有用的话。

1.在对象中定义一个push函数。

let obj={push:function push(element){ [].push.call(this,element)}};

现在您可以像数组一样推入元素

obj.push(1)
obj.push({a:1})
obj.push([1,2,3])

这将产生这个对象

obj={
 0: 1
 1: {a: 1}
 2: (3) [1, 2, 3]
 length: 3
}

注意,元素添加了索引,还可以看到对象中添加了一个新的length属性。这对于计算物体的长度也很有用。这是因为push()函数的泛型性质

我的建议是使用已经在其他答案中提出的不同的数据结构-它允许您在卡上进行推送。元素,并允许展开卡片属性:

Let card = { 元素:[ {" id ": 10,“数量”:1} ), //其他卡片字段,如'owner'或其他… } card.elements.push ({" id ": 22岁的“量”:3}) console.log(卡);

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

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

这个概念可能会有所帮助