我从CouchDB数据库收集了一些不同的,复杂的JSON对象。每个包含嵌套属性的多层次 - 例如,在javascript中,测试属性深深嵌套在对象图中?
tps_report.personnel_info.productivity.units_sold = 8
我想通过这些对象进行迭代和做的东西与他们:例如,
// writes units sold from each TPS report:
for (i in tpsReports) {
if (tpsReports[i].personnel_info.productivity.units_sold < 10) {
fireEmployee();
}
}
的问题是,许多TPS报告唐没有设置所有这些属性。因此,如果我尝试这样做,那么在第一次循环获取到没有“personnel_info”属性的报告时,会出现错误,从而尝试查找“undefined”的“productivity”属性。我宁愿发生的是,条件只是跳过它并继续。
我看到周围这两种方式,这两种看似丑陋的我
- 测试每个属性分别与嵌套条件
- 封装在一个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();
}
}
}
有什么想法?
谢谢,这是我在“2.将该行放在try/catch块中以捕获错误并忽略它”的方法。 – thisismyname 2010-12-06 05:14:35