我需要一些简单的代码,当生成唯一的16个数字必须是0-9个数字时发出警报
答案 0 :(得分:1)
您可以创建一个对象来存储数字,大写,小写字符串;将引用对象属性名称的数组传递给rand
,使用Array.prototype.reduce()
连接成单个字符串。将60
更改为累积字符串.length
function rand(filter, length, current) {
current = current ? current : '';
var types = {
number: "0123456789",
uppercase: "ABCDEFGHIJKLMNOPQRSTUVWXTZ",
lowercase: "abcdefghiklmnopqrstuvwxyz"
};
var r = (filter[0] === "all" ? Object.keys(types) : filter).reduce((s, t) => {
s += types[t];
return s
}, "")
return length ? rand(filter, --length
, r.charAt(Math.floor(Math.random() * r.length)) + current) : current;
}
alert(rand(["number"], 16));
alert(rand(["number", "uppercase"], 16));
alert(rand(["all"], 16));
答案 1 :(得分:0)
使用Math.random():
function rand() {
n = Math.random()*1e17;
return (n+"").substr(1,16);
}
基本上生成0到1之间的随机数,乘以1e17得到17位数,然后取最后16位数。这样做是因为如果您只取前16个随机数字,则第一个数字可能为0而不会转换为字符串(因为不保留整数上的前导0')。所以改为17,取回16。