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

使用new Set()去除数字重复位时出现多余0的原因咨询

问题原因解析

你遇到的这个问题,核心是JavaScript的Number类型精度限制在搞鬼:

  • 你定义的n=112233445566778899已经超出了JavaScript中Number类型的「安全整数范围」(安全整数最大值是2^53-1,也就是9007199254740991)。
  • 双精度浮点数无法精确表示这个超大整数,JS会自动把它近似成最接近的可表示值——也就是112233445566778900(末尾的99被近似成了00)。
  • 当你执行String(n)时,得到的其实是近似后的数字字符串"112233445566778900",里面自然包含0,后续用Set去重后就会保留这个0,最终输出1234567890。

如果要避免这个问题,直接把n定义成字符串类型就行:

let n = "112233445566778899";
console.log([...new Set(n.split(''))].join('')); // 输出123456789

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:42:36