我從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