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

Node.js向对象内数组推送元素后控制台显示[Array]问题

问题原因

这个现象是Node.js内置console.log的输出优化机制导致的,和你代码本身的逻辑完全无关,内存里的对象结构是完全正确的。
Node.js在直接输出JS对象/数组时,默认只会展开嵌套深度≤2层的内容,超过这个深度的嵌套结构会被折叠显示:

  • 数组会被展示为[Array]
  • 普通对象会被展示为[Object]
    你代码里的relays数组嵌套层级是x[0].devices.relays,深度为3层,刚好超过默认的展开阈值,所以就被折叠了。
    而JSON.stringify()会把整个对象序列化为完整的JSON字符串,不会受控制台输出深度的限制,所以能看到完整结构。

解决方法

如果你想直接用console.log输出完整的嵌套对象,可以用以下几种方式:

  1. 使用console.dir并指定展开深度
// depth设为null会展开所有层级的嵌套
console.dir(x, { depth: null })
  1. 手动把对象转成格式化的JSON输出
// 第三个参数为缩进空格数,输出的格式可读性更高
console.log(JSON.stringify(x, null, 2))
  1. (不推荐全局修改)修改Node.js控制台默认展开深度
require('util').inspect.defaultOptions.depth = null

额外说明

你开发REST API不需要担心这个问题,Express、Koa等主流Node.js后端框架在返回JS对象给客户端时,会自动完成完整的JSON序列化,客户端收到的会是包含完整relays结构的正常数据,不会出现折叠的情况。

内容的提问来源于stack exchange,提问作者Tushar Hasan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:45:02