You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:40:16