Javascript Node.js-console.log不显示数组中的项,而是显示[Object]
我在注销对象中数组的内容时遇到问题。实际对象如下所示Javascript Node.js-console.log不显示数组中的项,而是显示[Object],javascript,arrays,node.js,object,console.log,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.l
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' } }
这里发生了什么,以及如何在Iconsole.log
时获得要显示的第二个数组的项。谢谢你的帮助
更新
很抱歉,我忘了补充一点,我只在Node.js中工作,因此它是一个服务器端日志,需要显示对象,与从直接控制台.log
回调接收到的对象完全相同,即不再进行字符串化
我还尝试创建另一个具有类似结构的随机对象
var objText = {
fun: {
stuff: 'Some stuff',
list: ['this', 'it', 'takes']
}
};
上面的console.log
是:
{ fun: { stuff: 'Some stuff', list: [ 'this', 'it', 'takes' ] } }
这对我来说似乎是相同的结构,但是
console.log
工作得很好,所以在节点中记录数组内容似乎是完全可能的,即使它嵌入在内部,并且是外部对象中的对象。尝试使用:console.log(JSON.stringify(变量))
尝试使用:console.log(JSON.stringify(variable))
这是某些浏览器和实现使用console.log显示过于复杂或深入的对象/数组的默认方式。另一种方法是使用JSON.stringify和console.log:
var stuff={
已接受:['item1','item2'],
已拒绝:[],
回应:"Foo",,
信封:{
发件人:,
收件人:[‘新项目1’、‘新项目2’]
},
messageId:'xxxxxxxxxxxx'
}
console.log(JSON.stringify(stuff,null,4));
这是一些浏览器和实现使用console.log显示太复杂或太深的对象/数组的默认方式。另一种方法是使用JSON.stringify和console.log:
var stuff={
已接受:['item1','item2'],
已拒绝:[],
回应:"Foo",,
信封:{
发件人:,
收件人:[‘新项目1’、‘新项目2’]
},
messageId:'xxxxxxxxxxxx'
}
console.log(JSON.stringify(stuff,null,4));
如果您喜欢Chrome devtools,它可以折叠JSON对象并让您观察很多东西,您可以使用--inspect
标志:
node --inspect index.js
控制台会给你一个URL,你只需在谷歌浏览器中复制粘贴即可享受谷歌浏览器控制台
如果您喜欢Chrome devtools,它可以折叠json对象并让您观察很多东西,您可以使用
--inspect
标志:
node --inspect index.js
控制台会给你一个URL,你只需在谷歌浏览器中复制粘贴即可享受谷歌浏览器控制台
无论如何,这似乎是一个老话题 我也遇到过同样的问题,嵌入式数组打印为
[array]
这是因为node.js中的console.log使用util.inspect
进行打印,默认深度为2。
因此,要打印深度超过2的内容,可以使用以下方法:
const util = require('util')
console.log(util.inspect(errors, true, 10))
不管怎么说,这似乎是个老话题 我也遇到过同样的问题,嵌入式数组打印为
[array]
这是因为node.js中的console.log使用util.inspect
进行打印,默认深度为2。
因此,要打印深度超过2的内容,可以使用以下方法:
const util = require('util')
console.log(util.inspect(errors, true, 10))
您正在使用哪个浏览器/环境?在Safari 10.1.1中显示良好。例如,nodejs以那种方式记录您正在使用哪个浏览器/环境?在Safari 10.1.1中显示良好。例如,nodejs以那种方式记录感谢您的建议,但我在节点0.12上,目前无法升级。感谢您的建议,但我在节点0.12上,目前无法升级片刻。这应该是可接受的答案:1.
console.log
使用util.inspect
,深度=2(因此存在OP问题),和2.使用建议的解决方案确实可以解决此问题。此外,如果您将最后一个参数添加到util.inspect
并传递true
,console.log
的行为与之前相同(例如,也显示颜色)。深度(此处为10)可以相应地进行调整。这应该是可接受的答案:1.console.log
使用util.inspect
,深度=2(因此存在OP问题),和2.使用建议的解决方案确实可以解决此问题。此外,如果将最后一个参数添加到util.inspect
并传递true
,控制台.log
的行为与之前相同(例如,也显示颜色)。深度(此处为10)可以相应调整。