簡體   English   中英

如何遍歷包含對象的對象?

[英]How to iterate through an object containing objects?

我的對象:

"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_group內的每個對象中獲取屬性key 每種運動都有不同數量的位置和狀態組,因此三重循環。 我沒有收到任何控制台錯誤,只是根本沒有抓住鍵,並且迭代器變量不是針對對象而是整數。

這就是我想要的結果stats對象為:

{
    "statkey1": true,
    "statkey2": true,
    "statkey3": 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;
        }
    }
}

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;
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM