我需要填充一个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 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}]" 

其他回答

在原始对象中添加新的key/pair元素:

const obj = { a:1, b:2 }
const add = { c:3, d:4, e: ['x','y','z'] }

Object.entries(add).forEach(([key,value]) => { obj[key] = value })

Obj新值:

{a: 1, b: 2, c: 3, d: 4, e: ['x', 'y', 'z'] }
 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');

OR:

var obj = {'key':'value'};

obj.key2 = 'value2';
cart.push({"element":{ id: id, quantity: quantity }});

对于仍然在寻找解决方案的人来说,我认为对象应该存储在一个数组中,就像…

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

然后当你想使用一个元素作为对象时,你可以这样做…

var element = cart.find(function (el) { return el.id === "id_that_we_want";});

在“id_that_we_want”处放置一个变量,并将我们想从数组中获取的元素的id赋给它。返回一个“element”对象。当然,我们不需要使用id来查找对象。我们可以用任何其他的属性来寻找。

要添加到对象,请使用object .assign

var ElementList ={}

function addElement (ElementList, element) {
    let newList = Object.assign(ElementList, element)
    return newList
}
console.log(ElementList)

输出:

{“元素”:{" id ": 10,“数量”:1},“元素”:{" id ": 11,“数量”:2}}