首页 > 解决方案 > 如何动态地将数组添加到对象?

问题描述

我想要达到的目标

我正在尝试将数组动态添加到对象。也就是说,从

 {colour: "white", type: "electric"};

并以

{colour: "white", type: "electric", owners: ["person1", "person2", "person3"] };

考虑下面的对象

let car = {colour: "white", type: "electric"};

如果我想向这个对象添加另一个属性,我可以检查它是否存在。然后按如下方式添加。

if( typeof car.status === "undefined")
    car.status = "sold";

我试过的

使用上述逻辑我尝试了以下

let car = {
  colour: "white",
  type: "electric"
};

if (typeof car.owners === "undefined")
  car.owners.push("person1");

但这不起作用。

问题

如何将数组添加到对象?

标签: javascriptarraysjavascript-objects

解决方案


要将数组添加到对象,请创建数组并将其分配给属性:

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);

如果您想稍后添加到该数组中,可以使用push. 但是数组必须首先存在。例如,类似:

// `person` has the person to add...
if (typeof car.owners === "undefined") {
  car.owners = [person];
} else {
  car.owners.push(person);
}

也就是说,最好避免不必要地改变对象的形状。我只是从一个空数组开始并取消if

let car = {
  colour: "white",
  type: "electric",
  owners: [] // <=== Empty array
};

car.owners.push("person1");

console.log(car);


推荐阅读