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

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

最佳答案

您不是在寻找包含数组的属性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/

相关文章:

javascript - 无法使用 Javascript 中的函数在边框中显示输出

javascript - 前端库智能解析 "Collection+JSON"

java - 当响应没有按预期出现时,如何使用 GSON 解析 json?

javascript - Protractor:Browser.wait() Timeout 在 Jasmine defaultTimeoutInterval 上超时

javascript - 如何使用jquery向用户显示弹出通知?

javascript - 如何纠正AngularJS中的分页

javascript - 移动菜单 Jquery 使非菜单项可单击关闭菜单。

javascript - Synpress 无法使用 cy.acceptMetamaskAccess (不是函数)

javascript - AngularJS:如何将 ngRepeat 指令与数组和子数组一起使用?

json - 来自 JSON 的 Swift 4 解码翻倍