这是 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
等等,一切都很完美。如何正确迭代所有这些数据?
最佳答案
您不是在寻找包含数组的属性browser
:result.stats.browsers[i]
,而是寻找可以访问的可变属性名称带方括号表示法:
var bStats = result.stats[浏览器[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);
}
关于javascript - 如何使用键值数组迭代 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42036889/