如何打印嵌套对象的所有值

mrd*_*iri 3 javascript jquery

有一个嵌套的对象:

var conversation = {
    'John': {
        1: 'Test message 1',
        2: 'Test message 2',
        'Reply': {
            3: 'Test message 3',
            4: 'Test message 4'
        }
    },
    'Jack': {
        5: 'Test message 5',
        6: 'Test message 6'
    }
};
Run Code Online (Sandbox Code Playgroud)

我需要获取所有最终值,因此对于该示例,它是:

Test message 1
Test message 2
Test message 3
Test message 4
Test message 5
Test message 6
Run Code Online (Sandbox Code Playgroud)

如何迭代对象?在jQuery或JavaScript中是否有任何内置函数?

tym*_*eJV 21

您可以使用一些递归来检查迭代的键是否是对象,然后打印:

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

printValues(conversation);
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/c7th1t8r/

  • @JuanMendes - 你为什么要用它来打印?这将对对象进行字符串化...我认为OP需要每个键的值. (4认同)
  • 如果你只是想打印,你不就用`JSON.stringify()`吗? (2认同)