Node.js中Set打印显示为空?console.log输出异常问题求助
为什么Node.js中打印Set实例显示为空但size属性正常?
这种情况我之前踩过坑!核心原因几乎都是你用的Node.js版本太旧——准确来说,是v10.x之前的版本对Set的控制台格式化支持有缺陷。
在旧版本Node.js里,console.log打印Set实例时,不会自动遍历并展示内部元素,只会输出Set {},但这纯粹是控制台的显示问题,Set本身是正常存储元素的,所以你调用size能得到正确的2。
解决办法
最彻底的方案:升级Node.js
升级到v10或更高版本后,Node.js的控制台已经修复了这个问题,直接执行console.log(new Set(['a', 'b']))就能看到类似Set(2) { 'a', 'b' }的正确输出。你可以用node -v命令检查当前版本。临时替代方案(不用升级)
如果暂时没法升级版本,你可以手动把Set转换成数组来打印:// 方法1:扩展运算符 console.log([...new Set(['a', 'b'])]) // 方法2:Array.from console.log(Array.from(new Set(['a', 'b'])))或者用Node.js内置的
util.inspect强制格式化输出:const util = require('util'); console.log(util.inspect(new Set(['a', 'b']), { depth: null }));
另外可以放心:不管控制台怎么显示,你的Set实例功能都是正常的,add、has、delete这些方法都能正常工作,只是旧版本控制台没把元素渲染出来而已。
内容的提问来源于stack exchange,提问作者Yann Droy
相关产品推荐
相关产品推荐

