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

Node.js跨文件操作数组时id值00000被存储为0问题求助

问题根因

该现象是JavaScript数值类型的固有特性导致的,和你的业务代码逻辑无关:

  • 代码中直接书写的00000属于十进制数值字面量,JS解析数值时会自动忽略十进制数的前导零,00000和0是完全等价的数值,存储时只会保留实际数值0,不会保留书写时的前导零格式。
  • 你的第二条测试数据565656没有前导零,所以输出符合预期。

修复方案

如果你的id需要保留固定长度的前导零格式,将id字段改为字符串类型即可:

users.adduser({
  'username': 'user add one',
  'id': '00000' // 用引号包裹转为字符串类型,前导零会被完整保留
});

额外注意事项

你当前users.js里的adduser方法的去重逻辑存在错误:
现有逻辑onlineUsers.some((user) => user.username != data.username)只要数组内存在任意一个和新用户不同名的用户就会返回真,会导致重名用户也可以被插入。正确的去重逻辑应该是:当不存在同名用户时才执行插入操作:

adduser: function(data) {
  if (!onlineUsers.some((user) => user.username === data.username)) {
    onlineUsers.push(data);
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:27:01