将元素添加到对象

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

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

而且我需要添加另一个“元素”。 我的第一步是把这个JSON放在一个Objecttypes中使用cart = JSON.parse ,现在我需要添加新的元素。 我想我必须使用cart.push添加另一个元素,我试过这个:

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

但是当我尝试使用element.push ,我得到了错误“Object has no method push”,我想我正在做一些非常错误的事情,因为我没有告诉任何地方的“元素”。

我怎样才能做到这一点?

编辑:对不起,我头脑中有很多混乱。

我认为从JSON.parse获取数据的时候只能得到对象types,但是我首先得到了我放入JSON的东西。

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

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

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

如果您希望购物车是{ element: { id: 10, quantity: 1} }forms的对象数组,请执行:

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

那一排

 var element = {}; 

你定义的element是一个普通的对象。 原生JavaScript对象没有push()方法。 要将新项目添加到普通对象,请使用以下语法:

 element[ yourKey ] = yourValue; 

另一方面,你可以定义element作为一个数组使用

 var element = []; 

然后你可以使用push()来添加元素。

如果购物车必须作为一个对象存储,而不是数组(尽pipe我build议存储为[]],您可以随时更改结构以使用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 } } 

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

尝试这个:

 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); 
 cart.push({"element":{ id: id, quantity: quantity }}); 
  function addValueInObject(value, object, key) { var addMoreOptions = eval('{"' + key + '":' + value + '}'); if(addMoreOptions != null) { var textObject = JSON.stringify(object); textObject = textObject.substring(1,textObject.length-1); var AddElement = JSON.stringify(addMoreOptions); object = eval('{' + textObject +','+ AddElement.substring(1,AddElement.length-1) + '}'); } return object; } addValueInObject('sdfasfas', yourObject, 'keyname'); 

要么:

 var obj = {'key':'value'}; obj.key2 = 'value2'; 

如果有人正在寻找创build一个类似的JSON,只是没有使用cart作为数组,这里是:

我有一个对象myArr数组为:

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

我将尝试使用以下结构创buildJSON:

 { "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; }); 
 function addValueInObject(object, key, value) { var res = {}; var textObject = JSON.stringify(object); if (textObject === '{}') { res = JSON.parse('{"' + key + '":"' + value + '"}'); } else { res = JSON.parse('{' + textObject.substring(1, textObject.length - 1) + ',"' + key + '":"' + value + '"}'); } return res; } 

这个代码工作。

push是数组的一种方法,所以对于对象,你可以得到最后一个元素的索引,你可以像下面那样做对象的push工作

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

然后将对象添加到元素的新索引

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

如果你没有devise在JS中做循环例如传递给PHP为你做循环

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

这个概念可能会有所帮助