如何使用数组为键值迭代JSON数据

时间:2017-02-04 05:36:57

标签: javascript json

这是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等,一切都很完美。如何正确迭代所有这些数据?

1 个答案:

答案 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);
}