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

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


当前回答

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

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()函数的泛型性质

其他回答

下面的代码行将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 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}]" 
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是数组的一个方法,所以对于object,你可以得到最后一个元素的索引,你可以做和下面Push for object相同的工作

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

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

element[parseInt(lastIndex) +1] = { 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');

OR:

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

obj.key2 = 'value2';