What I am trying to achieve
I am trying to dynamically add an array to an object. That is, starting with
{colour: "white", type: "electric"};
and ending with
{colour: "white", type: "electric", owners: ["person1", "person2", "person3"] };
Consider the following object below
let car = {colour: "white", type: "electric"};
If I want to add another property to this object, I can check if it exist. Then add to it as follows.
if( typeof car.status === "undefined")
car.status = "sold";
What i have tried
Using the above logic I tried the following
let car = {
colour: "white",
type: "electric"
};
if (typeof car.owners === "undefined")
car.owners.push("person1");
but this doesn't work.
The question
How do I add an array to an object?
To add an array to an object, you create the array and assign it to a property:
let car = {
colour: "white",
type: "electric"
};
if (typeof car.owners === "undefined") {
// vvvvvvvvvvv----- creates the array
car.owners = ["person1"];
// ^^^^^^^^^--- assigns it to the property
}
console.log(car);
If you want to add to that array later, you can use push
. But the array has to exist first. E.g., something like:
// `person` has the person to add...
if (typeof car.owners === "undefined") {
car.owners = [person];
} else {
car.owners.push(person);
}
That said, it's best to avoid changing the shape of objects unnecessarily. I'd just start with an empty array and do away with the if
:
let car = {
colour: "white",
type: "electric",
owners: [] // <=== Empty array
};
car.owners.push("person1");
console.log(car);