这是JSON对象:
{
"stats":{
"ie":{
"9":"y",
"10":"y",
"11":"y"
},
"edge":{
"12":"y",
"13":"y",
"14":"y"
},
"firefox":{
"15":"y",
"16":"y",
"17":"y"
}
}
有更多数据,但这可以让您了解结构。这是我的代码:
var browsers = ["ie","edge","firefox"];
for (var i = 0; i < browsers.length; i++) {
var bStats = result.stats.browsers[i];
//Do something with it...
}
这给了我错误Uncaught TypeError: Cannot read property '0' of undefined
。如果我直接使用result.stats.ie
等,一切都很完美。如何正确迭代所有这些数据?
答案 0 :(得分:1)
您不是在寻找包含数组browser
的属性result.stats.browsers[i]
,而是查找可变属性名称,可以使用方括号表示法访问:
var bStats = result.stats[browsers[i]];
下面的代码段应该在实践中证明这一点:
var result = {
"stats":{
"ie":{
"9":"y",
"10":"y",
"11":"y"
},
"edge":{
"12":"y",
"13":"y",
"14":"y"
},
"firefox":{
"15":"y",
"16":"y",
"17":"y"
}
}
}
var browsers = ["ie","edge","firefox"];
for (var i = 0; i < browsers.length; i++) {
var bStats = result.stats[browsers[i]];
console.log(bStats);
}