Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 嵌套用于…在循环中列出多维对象的属性(对象)_Javascript - Fatal编程技术网

Javascript 嵌套用于…在循环中列出多维对象的属性(对象)

Javascript 嵌套用于…在循环中列出多维对象的属性(对象),javascript,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>");

我不知道如何在循环中相互嵌套以列出多维对象中的所有属性

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…in循环都需要更复杂,以测试对象是否确实是多维的?我很迷茫。

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

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


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

只需在内部循环中迭代内部对象。见下文:

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);
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 />");
        }
    }
}
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);