javascript - 如何使用单行递归地将属性添加到 Javascript 数组?
问题描述
我想将特定属性添加到尚未分配且属于父对象的 Javascript 对象。通常我会执行以下操作:
let obj = {};
if(!obj["property"])
{
obj["property"] = {};
}
obj["property"]["property2"] = value;
上面的代码可以用单行编写,并且 if 语句中没有对象分配吗?
为了与 Linux 进行比较,我想要类似于 mkdir -p ./a/b 而不是 mkdir a; 光盘一个; mkdir b。
谢谢你。
解决方案
是的,你可以这样做:
let obj = {};
(obj["property"] = obj["property"] || {})["property2"] = "value";
console.log(obj);
它利用||
运算符来检查虚假值,因此只有在检查对象或某些始终为真的值时,它才会可靠地工作。
=
然后它利用运算符返回分配的值这一事实。由于它是一个对象,而 JS 中的对象是一个引用类型,你可以给它分配一个属性,它会改变之前分配的对象。
然而,这很丑陋。我认为不应该如此强调编写“单行”代码。
推荐阅读
- vue.js - 组件中未定义的渲染函数或模板:匿名
- apache-kafka - 我们可以将 KStream 与 Flink 一起使用吗?
- php - 单击按钮时以表格格式显示数据
- apache-kafka - kafka mirrormaker 只构建主题
- java - 使用批处理作业的 FlatFileItemReader 和 FlatFileItemWriter
- javascript - jQUery preventDefault 或 stopPropagation() 不适用于切换表单
- distributed-computing - K-Bucket 在 Kademlia DHT 中到底意味着什么?
- wpf - 在不知道 Visual Studio 入口点的情况下跟踪执行路径
- java - SpringMVC 无法到达控制器,每次都抛出 404
- scheduled-tasks - 读取 csv 文件内容并传递到 json 数组以通过 HTTP Post Action 发布 - Microsoft Flows