我从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"属性的报告时出现错误,从而尝试找到"未定义"的"生产力"属性.我宁愿发生的是条件只是跳过它并继续.
我看到了两种方法,这两种方式对我来说都很难看
我更喜欢的是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)
有什么想法吗?