VSCode中打印含嵌套对象的数组显示[Object]的问题求助
问题描述
我需要打印包含嵌套对象数组的对象数组,编写了如下JavaScript代码:
var courses = new Array(1) .fill() .map(function (element, index) { return { id: 1, name: 'Name', grades: [ { course_id: 1, grade: 2 }, { course_id: 2, grade: 5 }, ], }}) console.log(courses)
在VSCode的Code Runner中运行后,输出为:
[ { id: 1, name: 'Name', grades: [ [Object], [Object] ] } ]
但我需要的输出是完整的嵌套结构:
[ { id: 1, name: 'Name', grades: [ { course_id: 1, grade: 2 }, { course_id: 2, grade: 5 } ] } ]
该代码在浏览器控制台中能正常显示完整结构,请问该如何解决VSCode中的这个问题?
解决方法
方法1:使用console.dir()替代console.log()
console.dir()默认会展开显示嵌套对象的完整结构,添加depth: null参数可取消层级限制:
console.dir(courses, { depth: null });
方法2:使用JSON.stringify()转为格式化字符串输出
通过JSON.stringify()可以将对象转为完整的字符串形式,还能设置缩进提升可读性:
console.log(JSON.stringify(courses, null, 2));
参数说明:
- 第二个参数
null:不使用自定义替换函数 - 第三个参数
2:用2个空格缩进格式化输出
方法3:全局修改Node.js的检查器默认配置
如果希望所有console.log()都默认显示完整嵌套结构,可在代码开头添加以下语句:
require('util').inspect.defaultOptions.depth = null;
之后再调用console.log(courses)就能输出完整结构了。
内容的提问来源于stack exchange,提问作者Emil Mukaev
相关产品推荐
相关产品推荐

