Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js-console.log不显示数组中的项,而是显示[Object]_Javascript_Arrays_Node.js_Object_Console.log - Fatal编程技术网

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' } } 
这里发生了什么,以及如何在I
console.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)可以相应调整。