2017-06-08 272 views
1

我在注销对象内数组内容时遇到问题。实际的对象看起来像这样Node.js - console.log不显示数组中的项目,而是显示[Object]

var stuff = { accepted: [ 'item1', 'item2' ], 
     rejected: [], 
     response: 'Foo', 
     envelope: { from: 'The sender', to: ['new item1', 'new item2'] }, 
     messageId: 'xxxxxxxxxxxxx' } } 

console.log示出的第一阵列细的项目,但第二阵列被输出作为[Object]

{ accepted: [ 'item1', 'item2' ], 
      rejected: [], 
      response: 'Foo', 
      envelope: { from: 'The sender', to: [Object] }, 
      messageId: 'xxxxxxxxxxxxx' } } 

这里发生的事情,我怎么能得到第二阵列的内容,以显示我console.log。谢谢你的帮助!

UPDATE

对不起,我忘了补充一点,我在Node.js的专门工作,所以它是需要显示的对象,正是因为它从回调收到带有直console.log是一个服务器端日志,即。没有进一步的细化。

我也试过用类似的结构创建另一个随机对象。

var objText = { 
     fun: { 
     stuff: 'Some stuff', 
     list: ['this', 'it', 'takes'] 
     } 
    }; 

console.log的上面是:

{ fun: { stuff: 'Some stuff', list: [ 'this', 'it', 'takes' ] } } 

这似乎是相同的结构,我虽然在console.log工作正常,所以它似乎是在节点完全可能的,即使登录阵列内容当它嵌入在内部并且外部对象内部的对象时。

+0

您正在使用哪种浏览器/环境?在Safari 10.1.1中,它显示正常。 –

+0

例如,nodejs以这种方式记录它 –

回答

-1

这意味着,不知何故,你的to不是一个数组,它是一个对象。

不可能根据您分享的代码来判断发生的情况。我们需要查看创建这些对象的代码。

+3

感谢您的快速响应。但我认为这样做会更好,因为它并不建议如何解决问题。但是,关于代码,目前代码是最终将从Nodemailer获得的响应的模拟。所以它是一个纯粹的硬编码对象,但仍然没有正确记录第二个数组。 – mikeym

+0

另外,'to'看起来与我接受的阵列非常相似。它当然不是一个对象。 – mikeym

0

与尝试:console.log(JSON.stringify(variable))

1

这是一些浏览器并显示出的console.log过于复杂或深的对象/数组实现的默认方式。另一种方法是使用JSON.stringify用的console.log:

var stuff = { 
 
    accepted: ['item1', 'item2'], 
 
    rejected: [], 
 
    response: 'Foo', 
 
    envelope: { 
 
    from: 'The sender', 
 
    to: ['new item1', 'new item2'] 
 
    }, 
 
    messageId: 'xxxxxxxxxxxxx' 
 
} 
 

 

 
console.log(JSON.stringify(stuff, null, 4));

0

如果你喜欢Chrome的devtools,可以折叠的JSON对象,让你观察到了很多东西,你可以使用--inspect标志:

node --inspect index.js 

控制台将然后给你一个网址,你只需要复制粘贴在谷歌浏览器享受谷歌浏览器的控制台。

More information on this link

+0

感谢您的建议,但我在节点0.12,目前无法升级。 – mikeym