'How to dynamically add an array to an object?

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?



Solution 1:[1]

If the status property exists in the object then u have to follow the below way

let car = {colour: "white", type: "electric",status:"somethings!"};
if(car.status){
  car.status = "sold";
}
console.log(car)
// o/p { colour: 'white', type: 'electric', status: 'sold' }

If the status property does not exist in the object

let car = {colour: "white", type: "electric"};
if(car.status){
  car.status = "sold";
}
console.log(car)
// o/p { colour: 'white', type: 'electric' }

If the Array property exists inside the object then you should follow the below sample code

let car = {colour: "white", type: "electric"};
if(car.owners && car.owners.length > 0){
  // when the owners property exist and it's not an empty array 
  car.owners.push("person1");
} else {
  // when the owners property does not exist or it's an empty array
  car.owners = [];
  car.owners.push("person2");
}
console.log(car)

// o/p { colour: 'white',type: 'electric',owners: [ 'person2' ] }

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1