Adding elements to object

The line of code below defines element as a plain object.

let element = {}

This type of JavaScript object with {} around it has no push() method. To add new items to an object like this, use this syntax:

element[yourKey] = yourValue

To put it all together, see the example below:

let element = {} // make an empty object

/* --- Add Things To The Object --- */

element['active'] = true // 'active' is the key, and 'true' is the value
console.log(element) // Expected result -> {type: true}


element['state'] = 'slow' // 'state' is the key and 'slow' is the value
console.log(element) // Expected result -> {type: true, state: 'slow'}

On the other hand, if you defined the object as an array (i.e. using [] instead of {}), then you can add new elements using the push() method.


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 = [];
element.id = id;
element.quantity = quantity;
cart.push(element);

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

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

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

>> JSON.stringify([{a: 1}, {a: 2}]) 
      "[{"a":1},{"a":2}]" 

To append to an object use Object.assign

var ElementList ={}

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

Output:

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