是否有检查嵌套属性存在的快捷方式[重复]

Posted

技术标签:

【中文标题】是否有检查嵌套属性存在的快捷方式[重复]【英文标题】:Is there a shortcut to check nested property existence [duplicate] 【发布时间】:2017-06-05 16:56:29 【问题描述】:

我不知道是否设置了a.b。只有当a.b[0].c 为真时,我才想做某事。我可以这样做:

if (a.b && a.b[0] && a.b[0].c) 
    // ...

是否有检查嵌套存在的快捷方式?我可以简化这种情况吗?

【问题讨论】:

我认为这是做你想做的最清晰、最简洁的方法。这就是为什么我如此喜欢coffeescript。在 CS 中,您只需说 if a?.b?[0]?.c then ...。我真的希望未来的 javascript 版本能包含更多的咖啡脚本的简单性。 【参考方案1】:

我曾经编写高尔夫代码,我们使用的技巧之一如下。

(myArray || [])[0] || 0

首先,评估myArray || [],如果myArray 存在,则返回它,如果不存在,则返回一个空数组。假设 myArray 没有定义。接下来,[][0] || 0 表达式被求值,因为 [][0] 未定义,所以返回 0。

在您的情况下,它可以通过以下方式使用:

((a.b || [])[0] || ).c || 

如果某些内容未定义,则返回一个空对象。

我并不是说你应该使用这个(事实上,你不应该),我只是想告诉你,有一个更小的解决方案。

更新:

如果tc39 成功,那么您将使用可选链接获得更好的解决方案:

a.b?[0]?.c

【讨论】:

我喜欢这个,但不能赞成它,因为我不认为它是一个实用的解决方案,因为它在浏览代码时很难阅读。但是多么漂亮的单线解决方案! 哈哈,我也喜欢这个:) @jusopi 这可能属于黑客类别。

以上是关于是否有检查嵌套属性存在的快捷方式[重复]的主要内容,如果未能解决你的问题,请参考以下文章

是否有关闭 Chrome 开发者工具的快捷方式?

警告1909,无法创建快捷方式。怎么办?

电脑装软件无法创建快捷方式,开始菜单里也只有文件夹没有软件

是否有对齐/标识代码行的 VS Code 快捷方式? [复制]

如何检查我的应用程序是不是通过 Siri 快捷方式恢复

浏览器主页被篡改修改回来的集中方式(不全)