javascript - 如何动态地将数组添加到对象?
问题描述
我想要达到的目标
我正在尝试将数组动态添加到对象。也就是说,从
{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");
但这不起作用。
问题
如何将数组添加到对象?
解决方案
要将数组添加到对象,请创建数组并将其分配给属性:
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);
推荐阅读
- c++ - C ++:从向量的任何地方获取int
- javascript - Javascript 函数(标签管理器) - 从今天开始添加 7 天并格式化
- java - 另一个方法调用完成后如何从一个方法返回?
- jquery - 如何解决 Uncaught SyntaxError: Unexpected token '==' in JQuery-UI datepicker
- asp.net-mvc - w3wp.exe 进程和 KERNELBASE.DLL 模块中的 APPCRASH
- c++ - node js读取二进制数据
- requirements - 从 DOORS 中具有相同属性的两个模块更新对象
- paypal-sandbox - Paypal 退款 API 给出未经授权的错误
- microsoft-graph-api - 如何使用 microsoft graph API 复制 excel 文件?
- amazon-web-services - .ebextensions 未包含在 AWS 源包中