Node.js - console.log不显示数组中的项目,而是显示[Object]

时间:2017-06-08 20:02:33

标签: javascript arrays node.js object console.log

我在注销对象内的数组内容时遇到问题。实际对象看起来像这样

   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时显示第二个数组的项目。谢谢你的帮助!

更新

抱歉,我忘了添加我在Node.js中专门工作所以它是一个服务器端日志,需要完全显示该对象,因为它是从一个直接回调的{{1 },即。没有进一步的字符串化。

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

console.log

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

console.log

这似乎与我的结构相同,但{ fun: { stuff: 'Some stuff', list: [ 'this', 'it', 'takes' ] } } 工作得很好,因此在Node中记录数组内容似乎是完全可能的,即使它嵌入在内部和外部的对象中也是如此对象

4 个答案:

答案 0 :(得分:2)

这是某些浏览器和使用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));

答案 1 :(得分:2)

反正这似乎是一个老话题

我也遇到过同样的问题,嵌入式阵列打印为[Array]

这是因为node.js中的console.log使用util.inspect进行打印,默认深度为2。 因此,可以使用深度大于2的东西进行打印:

const util = require('util')
console.log(util.inspect(errors, true, 10))

答案 2 :(得分:0)

尝试使用:console.log(JSON.stringify(variable))

答案 3 :(得分:-1)

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

node --inspect index.js

然后,控制台会为您提供一个网址,您只需在Google Chrome中复制粘贴即可享受Google Chrome控制台。

More information on this link