嵌套在...循环中,列出多维对象的属性(对象)

时间:2014-12-10 16:38:33

标签: javascript

我无法围绕如何在彼此的循环中嵌套以列出多维对象中的所有属性。

var list = {};
list.one = {
    a: true,
    b: false,
    c: true
};
list.two = {
    a: true,
    b: false,
    c: true
};

var listing = function(obj) {
    for (prop in obj) {
        document.write(prop+"<br>");        
        for (props in obj) { //not sure what to write here
            document.write("---"+props+"<br>");
        }
}

listing(list);

如何编写for循环以获得类似的内容:

one
---true
---false
---true
two
---true
---false
---true

每个连续嵌套for ... in循环是否需要更复杂,测试对象是否确实是多维的?我很丢失。

2 个答案:

答案 0 :(得分:0)

您需要枚举内部对象obj[prop]

function listing(obj) {
    for (var prop in obj) {
        document.write(prop+"<br>");        
        for (var nestedProp in obj[prop]) {
            document.write("---"+nestedProp+": "+obj[prop][nestedProp]+"<br />");
        }
    }
}
  

每个连续嵌套for ... in循环是否需要更复杂,测试对象是否确实是多维的?

不,如果您事先知道尺寸的数量,则不需要对其进行测试,只能嵌套循环。对于任意数量的级别,您将使用递归函数,该函数需要测试参数是否为可枚举对象是否为“叶子”值。

答案 1 :(得分:0)

只需要遍历内部循环中的内部对象。见下文:

var list = {};
list.one = {
    a: true,
    b: false,
    c: true
};
list.two = {
    a: true,
    b: false,
    c: true
};

var listing = function(outerObj) {
    for (var outerProp in outerObj) {
        var innerObj = outerObj[outerProp];

        document.write(prop+"<br>");

        for (var innerProp in innerObj) {
            document.write("---"+props+"<br>");
        }
}

listing(list);