如何使用一个内衬递归地向Javascript数组添加属性?

Adr*_*gru 1 javascript

我想向尚未分配的Javascript对象添加特定属性,该属性是父对象的一部分。通常我会执行以下操作:

let obj = {};

if(!obj["property"])
{
    obj["property"] = {};
}

obj["property"]["property2"] = value;
Run Code Online (Sandbox Code Playgroud)

上面的代码可以用一个衬里编写,并且在if语句中没有对象分配的情况下吗?

与Linux进行比较,我想使用类似于mkdir -p ./a/b而不是mkdir a的东西。cd a; 麦克迪尔湾

谢谢。

zig*_*ggy 9

是的,您可以这样做:

let obj = {};


(obj["property"] = obj["property"] || {})["property2"] = "value";


console.log(obj);
Run Code Online (Sandbox Code Playgroud)

它利用||运算符来检查假值,因此只有在检查对象或某些始终为真的值时,此方法才能可靠地工作。

然后利用=操作员返回分配的值这一事实。由于它是一个对象,而JS中的对象是引用类型,因此您可以为其分配属性,它将使先前分配的对象发生变化。

但是,这很丑。我认为不应过多地强调编写“一个班轮”代码。