thi*_*ame 4 javascript properties graph object
我从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)
有什么想法吗?
function isset(obj, propStr) {
var parts = propStr.split(".");
var cur = obj;
for (var i=0; i<parts.length; i++) {
if (!cur[parts[i]])
return false;
cur = cur[parts[i]];
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
请注意,第二个参数是字符串,因此在访问不存在的属性上的属性时不会抛出异常.
| 归档时间: |
|
| 查看次数: |
3008 次 |
| 最近记录: |