我正在尝试使用Javascript生成一个四位数的密码,介于0000和9999之间.我有问题,自然会产生像403这样的数字,所以一切都以0为前缀,然后我substr用来得到最后四位数.
出于某种原因,最后一个数字始终为零,我不知道为什么:
function generatePin () {
min = 0,
max = 9999;
return ("0" + Math.floor(Math.random() * (max - min + 1)) + min).substr(-4);
}
Run Code Online (Sandbox Code Playgroud)
运行10次的输出是:
2200
1070
9370
4870
5190
5490
5240
7410
1190
0220
2310
Run Code Online (Sandbox Code Playgroud)
它以0结尾,因为在你的数字的末尾,你有+ min,并且min是0.它执行字符串连接,而不是整数加法,所以你要在0到最后添加.只需删除该位,它将解决问题.
而Buck Doyle(原谅我不知道如何链接到用户这一事实)是非常正确的 - 如果你要将整个事情解析为一个字符串,你需要一些更多的前导零.即使你随机分配1,前面的三个零也会给你一个四位数的字符串.