【问题标题】:How do I loop through a multi-level object in JS? [duplicate]如何在 JS 中循环遍历多级对象? [复制]
【发布时间】:2015-06-14 05:25:39
【问题描述】:

如何循环遍历下面对象中的每个 value: 属性?我在下面的console.log 中的尝试显然不起作用,但这就是我想要完成的。 console.log(key) 会输出 "A1" "A2",但我不知道如何循环并检索更深层次属性的名称或值。

var object = {
    A1: {
        B1: {
            C1: "A"
        },
        B2: {
            C1: "B"
        },
        B3: {
            C1: "C"
        },
    },
    A2: {
        B4: {
            C1: "D"
        },
        B5: {
            C1: "E"
        },
        B6: {
            C1: "F"
        }
    }
};

for (var key in object) {
    console.log(object[key][key].value);
}

【问题讨论】:

  • 从内部循环开始以获得下一级属性,只需以不同的方式命名key

标签: javascript loops object properties


【解决方案1】:
var object = {
    A1: {
        B1: {
            C1: "A"
        },
        B2: {
            C1: "B"
        },
        B3: {
            C1: "C"
        },
    },
    A2: {
        B4: {
            C1: "D"
        },
        B5: {
            C1: "E"
        },
        B6: {
            C1: "F"
        }
    }
};

function printObj(obj) {
  for (var key in obj) {
    var value = obj[key];
    if (typeof value === 'object') {
      printObj(value);
    } else {
      console.log(value);
    }
  }
}

printObj(object);

只需使用递归

【讨论】:

    【解决方案2】:

    您可能正在寻找 嵌套的 for 循环。要迭代这个特定的对象(我们知道它恰好具有三个嵌套级别),您可以尝试这样的操作:

    for(var key1 in object) {
      for(var key2 in object[key1]) {
        for(var key3 in object[key1][key2]) {
          console.log(object[key1][key2][key3]);
        }
      }
    }
    

    输出:

    "A"
    "B"
    "C"
    "D"
    "E"
    "F"
    

    【讨论】:

      【解决方案3】:

      使用嵌套循环:

      var object = {
        A1: {
          B1: {
            C1: "A"
          },
          B2: {
            C1: "B"
          },
          B3: {
            C1: "C"
          },
        },
        A2: {
          B4: {
            C1: "D"
          },
          B5: {
            C1: "E"
          },
          B6: {
            C1: "F"
          }
        }
      };
      for (var key1 in object) {
        var e1 = object[key1];
        for (var key2 in e1) {
          var e2 = e1[key2];
          for (var key3 in e2) {
            console.log(e2[key3]);
          }
        }
      }

      【讨论】:

        猜你喜欢
        • 2021-07-03
        • 1970-01-01
        • 2011-02-26
        • 2019-08-08
        • 2014-02-22
        • 1970-01-01
        • 1970-01-01
        • 2016-07-08
        • 2015-03-18
        相关资源
        最近更新 更多