首页 > 解决方案 > 如何使用单行递归地将属性添加到 Javascript 数组?

问题描述

我想将特定属性添加到尚未分配且属于父对象的 Javascript 对象。通常我会执行以下操作:

let obj = {};

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

obj["property"]["property2"] = value;

上面的代码可以用单行编写,并且 if 语句中没有对象分配吗?

为了与 Linux 进行比较,我想要类似于 mkdir -p ./a/b 而不是 mkdir a; 光盘一个; mkdir b。

谢谢你。

标签: javascript

解决方案


是的,你可以这样做:

let obj = {};


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


console.log(obj);

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

=然后它利用运算符返回分配的值这一事实。由于它是一个对象,而 JS 中的对象是一个引用类型,你可以给它分配一个属性,它会改变之前分配的对象。

然而,这很丑陋。我认为不应该如此强调编写“单行”代码。


推荐阅读