Adding elements to object


I need to populate a json file, now I have something like this:


And I need to add another "element". My first step is putting that json in a Object type using cart = JSON.parse, now I need to add the new element. I supposed I must use cart.push to add another element, I tried this:

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

But I got error "Object has no method push" when I try to do element.push, and I think I'm doing something VERY wrong because I'm not telling the "element" anywhere.

How can I do that?

Edit: sorry to all I had a LOT of confusion in my head.

I thought I can get only object type when taking data from JSON.parse, but I get what I put in the JSON in the first place.

Putting array instead of object solved my problem, I used lots of suggestions got here too, thank you all!

8/24/2020 8:56:50 PM

Accepted Answer

Your element is not an array, however your cart needs to be an array in order to support many element objects. Code example:

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

If you want cart to be an array of objects in the form { element: { id: 10, quantity: 1} } then perform:

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

JSON.stringify() was mentioned as a concern in the comment:

>> JSON.stringify([{a: 1}, {a: 2}]) 
1/9/2013 12:06:41 PM

If the cart has to be stored as an object and not array (Although I would recommend storing as an []) you can always change the structure to use the ID as the key:

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

This allows you to add multiple items to the cart like so:

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

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

To append to an object use Object.assign

var ElementList ={}

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




I was reading something related to this try if it is useful.

1.Define a push function inside a object.

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

Now you can push elements like an array


This will produce this object

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

Notice the elements are added with indexes and also see that there is a new length property added to the object.This will be useful to find the length of the object too.This works because of the generic nature of push() function


you should write var element = [];
in javascript {} is an empty object and [] is an empty array.


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