【发布时间】:2011-05-19 14:04:11
【问题描述】:
我从 CouchDB 数据库中收集了一组不同的、复杂的 JSON 对象。每个都包含许多级别的嵌套属性——例如,
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”属性的报告时,我会得到一个错误,从而试图找到“未定义”的“生产力”属性。我宁愿发生的是条件只是跳过它并继续。
我看到了两种解决方法,这两种方法对我来说都很难看
- 使用嵌套条件分别测试每个属性
- 将该行包含在 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();
}
}
}
有什么想法吗?
【问题讨论】:
标签: javascript object graph properties