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

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


当前回答

如果购物车必须存储为对象而不是数组(尽管我建议存储为[]),你总是可以改变结构,使用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 } }

其他回答

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

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

let element = {}

这种带有{}的JavaScript对象没有push()方法。要像这样向对象添加新项,使用以下语法:

element[yourKey] = yourValue

把它们放在一起,请看下面的例子:

Let element ={} //创建一个空对象 /*——向对象中添加东西——*/ Element ['active'] = true // 'active'是键,'true'是值 console.log(element) //期望结果-> {type: true} Element ['state'] = 'slow' // 'state'是键,'slow'是值 console.log(element) //预期结果-> {type: true, state: 'slow'}

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

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

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 };

如果有人想创建一个类似的JSON,只是不使用cart作为数组,下面是:

我有一个对象数组myArr as:

var myArr = [{resourceType:"myRT",
            id: 1,
            value:"ha"},
            {resourceType:"myRT",
            id: 2,
            value:"he"},
            {resourceType:"myRT",
            id: 3,
            value:"Li"}];

和我将尝试创建一个JSON与以下结构:

{
 "1":{"resourceType":"myRT","id":"1","value":"ha"},
 "2":{"resourceType":"myRT","id":"2","value":"he"},
 "3":{"resourceType":"myRT","id":"3","value":"Li"}
}

你可以简单地做

var cart = {};
myArr.map(function(myObj){
                    cart[myObj.id]= myObj;
                    });