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

Chrome控制台输出JSON数组异常:长度正确但元素显示不全

解决Chrome控制台无法正确展示数组去重前后变化的问题

我太懂这种郁闷了——明明数组长度和实际元素数对得上,但Chrome控制台就是没法完整显示修改前后的数组内容,甚至可能看起来前后两次log的结果一模一样。这其实是Chrome控制台的两个特性在搞鬼,咱们一步步解决:

问题1:引用类型的日志“延迟快照”坑

你现在的代码是直接打印同一个对象的引用:

//Before------------------
console.log(myjsonobject);
removeduplicates(myjsonobject);
//After-------------------
console.log(myjsonobject);

因为myjsonobject是引用类型(对象/数组),Chrome控制台并不会在你调用console.log的瞬间就把对象的所有内容拍下来存好,而是等你点击展开日志的时候,才去读取这个对象的当前状态。所以哪怕你先log了修改前的对象,等你去展开它的时候,removeduplicates已经把原对象改完了,看到的自然是修改后的内容。

解决办法:拍个“快照”再log

在打印修改前的对象时,先做一次深拷贝,生成一个和原对象完全独立的快照,这样就能固定住修改前的状态:

//Before------------------
// 深拷贝生成快照,避免引用关联
const beforeState = JSON.parse(JSON.stringify(myjsonobject));
console.log("修改前:", beforeState);

removeduplicates(myjsonobject);

//After-------------------
console.log("修改后:", myjsonobject);

问题2:长数组被控制台自动折叠

如果你的数组元素比较多,Chrome控制台默认会把中间的元素折叠起来(比如只显示首尾几个,中间用...代替),导致你看不到全部元素。这时候有两个好用的办法:

  • 用console.table()代替console.log():它会把数组元素以表格形式完整展示,一目了然:
    console.table(beforeState); // 展示修改前的数组表格
    console.table(myjsonobject); // 展示修改后的数组表格
    
  • 调整控制台显示限制:点击控制台右上角的齿轮图标打开设置,找到Console limits,把“Maximum logged items”的数值调大,就能显示更多元素了。

另外,如果你想直接看到完整的字符串形式,也可以用JSON.stringify格式化输出:

console.log("修改前:", JSON.stringify(myjsonobject, null, 2));

这样就能完美看到数组去重前后的完整变化啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:39:48