Adding elements to object
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}]"
With that row
var element = {};
you define element
to be a plain object. The native JavaScript object has no push()
method. To add new items to a plain object use this syntax:
element[ yourKey ] = yourValue;
On the other hand you could define element
as an array using
var element = [];
Then you can add elements using push()
.
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 } }