javascript - 检查对象是否有子属性

标签 javascript

假设有一个像这样的对象

var a = {
  b: {
    c: [
      {
        e: 'hello'
      },
      {
        f: 'bye'
      }
    ]
  }
};

我想检查e是否有效。

目前我正在使用多个 if 条件,例如

if (typeof a !== 'undefined' && typeof a.b !== 'undefined' && typeof a.b.c !== 'undefined' && typeof a.b.c[0] !== 'undefined') {
      console.log('value of e ' + a.b.c[0].e);
}

是否有更简洁的方法来达到相同的结果?

谢谢

最佳答案

我不确定你在尝试什么,但你可以用它来确保有“e”值

a = a || {};
var e = a && a.b && a.b.c && a.b.c[0] && a.b.c[0].e;

或者你可以使用

a = a || {};
if (a && a.b && a.b.c && a.b.c[0] && a.b.c[0].e){
   console.log('value of e ' + a.b.c[0].e);
}

如果你对值(value)观有把握,我喜欢这种用法。

var e = a.b.c[0].e || "no value";
// "hello"

var e = a.b.c[0].d || "no value";
// "no value"

关于javascript - 检查对象是否有子属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24678655/

相关文章:

javascript - 如何修复 Highcharts 错误 #13?

javascript - 如何更改包含字符串的元素之上的类?

javascript - 带单选框的 ng-repeat 未在更改时触发

javascript - Node包自动从数据库生成api?

javascript - 新日期 ('2016-10-31' ) 2016 年 10 月 30 日星期日返回

javascript - XSD 到 JavaScript 类的转换

javascript - 如何将两个不同的图表并排放置?

javascript - AngularJS (HTML, CSS) 在客户端转为 pdf

javascript - 如何获取表 <tr> 的唯一行并使用 jquery 对它们进行计数

javascript - 合并数组中的对象