我在注销对象内的数组内容时遇到问题。实际对象看起来像这样
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中记录数组内容似乎是完全可能的,即使它嵌入在内部和外部的对象中也是如此对象
答案 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控制台。