相关疑难解决方法(0)

在javascript中,测试属性是否深深嵌套在对象图中?

我从CouchDB数据库中获得了一组完全不同的复杂JSON对象.每个都包含许多级别的嵌套属性 - 例如,

tps_report.personnel_info.productivity.units_sold = 8  
Run Code Online (Sandbox Code Playgroud)

我想迭代这些对象并用它们做些事情:例如,

// writes units sold from each TPS report:
for (i in tpsReports) {
  if (tpsReports[i].personnel_info.productivity.units_sold < 10) {
    fireEmployee();
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是许多TPS报告没有设置所有这些属性.因此,如果我尝试这个,我将在第一次循环到达没有"personnel_info"属性的报告时出现错误,从而尝试找到"未定义"的"生产力"属性.我宁愿发生的是条件只是跳过它并继续.

我看到了两种方法,这两种方式对我来说都很难看

  1. 使用嵌套条件分别测试每个属性
  2. 将该行括在try/catch块中以捕获错误并忽略它

我更喜欢的是PHP的isset()函数,它不会抛出错误,无论你提供什么 - 它只会告诉你你正在寻找的特定变量是否存在.所以,就像

// writes units sold from each TPS report:
for (i in tpsReports) {
  if (isset(tpsReports[i].personnel_info.productivity.units_sold)){
    if (tpsReports[i].personnel_info.productivity.units_sold < 10) {
      fireEmployee();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

javascript properties graph object

4
推荐指数
1
解决办法
3008
查看次数

标签 统计

graph ×1

javascript ×1

object ×1

properties ×1