如何检查一个深度属性是否存在
How to check existence of a deep property
对于以下代码是否有更好的解决方案:
if (response && response.responseJSON && response.responseJSON.message) {
//code
}
你做的很好。它看起来有点丑,但它清楚地说明了发生了什么。如果你真的想,你可以把完整的表达式放在一个try-catch
块中,但这将是一个糟糕的练习,更难阅读/维护。
我猜你想要像Groovy的"安全导航操作符"那样的东西,所以你可以这样做:
if (response?.responseJSON?.message)
但是Javascript没有这样的东西
您总是可以使用辅助函数:
Object.prototype.deepExist = function(attPath){
var o = this,
path = attPath.split(".");
for (var i=0; i<path.length; i++){
o = o[path[i]];
if (!o) {
return false;
}
}
return true;
}
用法:
if (response.deepExist("responseJSON.message")){
//code
}
相关文章:
- 在不知道深度或父属性的情况下从对象中删除属性
- lodash:深度复制对象,但不是所有属性
- jQuery深度扩展并保留所有属性
- 角度深度比较对象(特定属性除外)
- 找出 Vue.js 深度自定义指令中哪个属性发生了变化
- 在 Javascript 中,在执行深度复制时,由于属性为“this”,我如何避免循环
- JS中的深度属性
- NG-重复深度属性基于选择值进行过滤
- 使用 lodash 按属性名称提取深度嵌套的子对象
- 如何防止jQuery扩展深度副本复制我的一些自定义属性
- 在 JavaScript 中的对象中设置具有未知深度的属性值
- 切换嵌套的布尔对象属性(在任意深度)——可以不使用eval
- 给定一个对象数组,如何根据深度为n的属性对对象排序
- 如何检查一个深度属性是否存在
- 验证对象中是否存在深度属性
- Ember计算属性绑定到深度嵌套属性时不会触发
- 根据顺序更改深度嵌套Javascript对象中同名属性的多个值
- 在JavaScript中检查深度嵌套对象属性是否存在的最简单方法是什么?
- Chai中仅自身对象属性的深度对象等式
- Angularjs绑定到深度嵌套对象属性时的性能