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

Node.js中往对象内的对象数组push元素后输出不符合预期问题

问题原因

这是Node.js环境console.log的默认输出规则导致的,和你的代码逻辑无关,你写的push操作已经正确执行,数据本身和你预期的完全一致。

Node.js打印对象时默认会调用内置的util.inspect方法做格式化输出,该方法默认的对象嵌套展开深度为2层,超过深度的嵌套对象会被折叠为[Object]占位符:

  • 第一层:abc根对象
  • 第二层:abc.b数组
  • 第三层:数组内的{aa:1, bb:2}这类对象,超出默认展开深度,所以被折叠

你可以单独执行console.log(abc.b[0])验证,会输出完整的{ aa: 1, bb: 2 },说明数据是正确存储的,只是展示时被折叠。

解决方案

下面是几种常用的完整展开打印的方法:

  1. 使用JSON.stringify转字符串打印
    无需引入额外依赖,适合纯数据对象打印:
// 第二个参数是替换函数,传null即可,第三个参数是缩进空格数
console.log(JSON.stringify(abc, null, 2))

注意:该方法无法打印JSON不支持的类型(比如函数、Symbol、值为undefined的属性等)。

  1. 使用console.dir指定展开深度
    专门用于对象打印的API,直接配置深度参数即可:
// depth设为null代表无限展开所有嵌套层级
console.dir(abc, { depth: null })
  1. 手动调用util.inspect自定义格式化
    自由度最高,可以配置更多打印规则:
const util = require('util')
console.log(util.inspect(abc, { 
  depth: null, // 展开深度
  colors: true // 输出带语法高亮的彩色内容
}))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:27:03