javascript - 确定引用中的对象是否为空的最佳方法

标签 javascript typescript

在 JavaScript(或 TypeScript)中,如果我要引用类似的内容:

return myObj1.myObj2.myObj3.myProperty;

为了安全起见,我用类似的东西来保护它:

if (myObj1 && myObj2 && myObj3) 
    return myObj1.myObj2.myObj3.myProperty;
else
    return null;

有没有一种更简洁的方法可以从上面的引用中获取 null 而不用 if 包围它?

请注意,由于我将在 TypeScript 应用程序中使用它,因此某些解决方案可能不适用于动态对象定义。

谢谢。

最佳答案

为此,我会使用像 lodash 这样的库:

 //gets undefined if any part of the path doesn't resolve.
 const answer = _.get(myObj1, "myObj2.myObj3.myProperty");

 //gets null if any part of the path doesn't resolve.
 const answer2 = _.get(myObj1, "myObj2.myObj3.myProperty", null);

参见https://lodash.com/docs/4.17.4#get了解详情。

关于javascript - 确定引用中的对象是否为空的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46978051/

相关文章:

angular - 在 Angular 8 中通过其子迭代中的 ID 显示父名称

angular - mat-sort-header/mat-sort 不适用于特定列

javascript - 对象未在 Javascript 中返回所需的对象

javascript - 有没有办法找出声音何时停止在 Javascript 中播放?

javascript - 用于用户协议(protocol) View 、检测启用按钮的 AngularJS 指令在移动 safari 上不起作用

javascript - StructuredClone() 在 TypeScript 中不可用

javascript - '+ ((visible && "is-active") || "")' 是一个好的做法吗?

javascript - 如何纠正node.js验证器中没有方法 'onValidationError'的错误?

node.js - 从 8 升级到 9 后无法构建 Angular 项目

angular - TypeError : Cannot read property 'taxTypeId' of undefined at Object. View_FullEditTaxComponent_0._co [as updateDirectives]