我正在使用以下代码生成一个随机数:
Math.floor((Math.random() * 9999) * 7);
Run Code Online (Sandbox Code Playgroud)
我得到的一些结果:
45130,
2611,
34509,
36658
Run Code Online (Sandbox Code Playgroud)
我如何得到这样的结果(包括2个字母):
TT45130,
PO2611,
KL34509,
GH36658
Run Code Online (Sandbox Code Playgroud)
问题:
Math.random()携带的数字范围是多少?我可以设置特定的值范围吗?没有必要回答,但只是好奇.
您可以使用下面的函数来获取随机大写字符:
function getRandomUppercaseChar() {
var r = Math.floor(Math.random() * 26);
return String.fromCharCode(65 + r);
}
Run Code Online (Sandbox Code Playgroud)
因此,要生成使用双字母前缀指定的代码:
function generateCode() {
var prefix = new Array(2).fill().map(() => getRandomUppercaseChar()).join(""),
integer = Math.floor((Math.random() * 9999) * 7);
return prefix + integer;
}
Run Code Online (Sandbox Code Playgroud)
注意:上面的generateCode功能使用现代ES6和ES5 javascript,这在现代环境(如Node.js或当前浏览器)中完全没问题.但是,如果您想要更高的兼容性(例如,为了确保它在旧浏览器中工作),您可以像这样重写它:
function generateCode() {
var integer = Math.floor((Math.random() * 9999) * 7);
for (var i = 0, prefix = ""; i < 2; ++i)
prefix += getRandomUppercaseChar();
return prefix + integer;
}
Run Code Online (Sandbox Code Playgroud)