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
相关产品推荐
相关产品推荐

