【发布时间】:2016-08-07 21:24:18
【问题描述】:
我需要一些简单的代码,当生成唯一的 16 个数字必须是 0-9 个数字时发出警报
【问题讨论】:
-
我查看了这个链接,我投了答案,但不算数
标签: javascript string random character
我需要一些简单的代码,当生成唯一的 16 个数字必须是 0-9 个数字时发出警报
【问题讨论】:
标签: javascript string random character
可以创建一个对象来存储数字、大写、小写字符串;将引用对象属性名称的数组传递给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));
【讨论】:
function(){} 替换箭头函数()=> .reduce() 调用jsfiddle.net/oco87pbu/1
使用 Math.random():
function rand() {
n = Math.random()*1e17;
return (n+"").substr(1,16);
}
基本上生成一个0到1之间的随机数,乘以1e17得到17位,然后取最后16位。这样做是因为如果您只取前 16 个随机数字,则第一个数字可能是 0 并且不会被转换为字符串(因为不保留整数上的前导 0)。所以改为 17,然后取回 16。
【讨论】:
alert()。这是一个为您提醒号码的工作小提琴:jsfiddle.net/xeezp1sx