Javascript 如何遍历包含对象的对象?

Javascript 如何遍历包含对象的对象?,javascript,json,Javascript,Json,我的目标: "hockey": { stats: { skaters: { regular: [ {name: "stat1", key: "statkey1"} {name: "stat2", key: "statkey2"} {name: "stat3", key: "statkey3"} ] },

我的目标:

"hockey": {
    stats: {
        skaters: {
            regular: [
                {name: "stat1", key: "statkey1"}
                {name: "stat2", key: "statkey2"}
                {name: "stat3", key: "statkey3"}

            ]
        },
        goalies: {
            regular: [
                {name: "stat1", key: "statkey4"}
                {name: "stat2", key: "statkey5"}
                {name: "stat3", key: "statkey6"}
            ]
        }
    }
}
我的代码:

var stats = [];
var key = "";
for (position in sport.stats) {
    for (stat_group in position) {
        for (stat in stat_group) {
            key = stat.key;
            stats[key] = true;
        }
    }
}
我试图使用上面的代码从
sport.stats.position.stat\u组中的每个对象抓取属性
。每项运动都有不同数量的位置和统计组,因此有三重for loop。我没有得到任何控制台错误,只是根本没有抓取键,迭代器变量的计算不是对象而是整数

下面是我想要的结果
stats
对象:

{
    "statkey1": true,
    "statkey2": true,
    "statkey3": true,
    ...
}

希望你们能帮忙!谢谢

JS
for…in
循环遍历键,而不是值。如果要完全迭代对象,可以这样做:

for (key in sports.stats) {
  var position = sports.stats[key];
  for (group_key in position) {
    var stat_group = position[group_key];
    for (stat_key in stat_group) {
      stat_group[stat_key] = true;
    }
  }
}

javascript中的…为您提供对象的键,而不是值

根据你的逻辑,这就是你想要做的:

var stats = {};
var key = "";
for (position in sport.stats) {
    for (stat_group in sport.stats[position]) {
        for (stat in sport.stats[position][stat_group]) {
            key = sport.stats[position][stat_group][stat].key;
            stats[key] = true;
        }
    }
}

这不是。。。在
works中,请参见。而且
sport
没有定义,我只看到
stats
,它与
sport.stats
无关。我很确定“如何迭代包含对象的数组”已经被问了十几次了。还可以看到:,还有无数其他问题。谢谢!这就解决了问题。@adunn,你为什么取消选择我的答案?