需求
我们的验证码是在a-z,A-Z,0-9这62个数字或者字母中随机选出4个且这四个字母或者数字不重复作为验证码
主要思路
1、 我们需要这62个字母或者数字中随机的四个 ,我们可以利用 Math.random() 这个是取0-1中的随机数 我们需要用随机数0-61作为这62个字符大字符串的随即索引,
2 、但是Math.random()整数小数都会取,所以我们需要用Math.round()这个函数使随机数四舍五入得Math.round(Math.random())
3、 因为我们取的是0-61之间的随机数所以我们需要将这个值*61, 所以得Math.round(Math.random()*61) 这个就是我们所需要的这个大字符串的索引
4、 其次我们需要一个容器来盛装这4个随机的字符 且里边不能有重复的字符串,
这时我们需要使用ofIndex===-1因为当ofIndex===-1时说明这个容器中不存在这个值
封装函数
function fn() {
var str = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789"
var s = '' //s就是盛装这四个随机的容器
while (s.length < 4) { //因为我们需要四位的验证码所以使容器的长度=4
var n = Math.round(Math.random() * 61) //令n为随机的数 这个数将作为str的索引
if(s.indexOf(str[n])===-1){
s += str[n] //使未重复的项添加到容器中
}
}
return s
}
关键点
1、如何获取n-m之间的一个随机整数: Math.round(Math.random()*(m-n)+n 利用Math中round和random获取
2、如何令这个容器中不出现重复s.indexOf(str[n])===-1 当ofIndex===-1时说明这个容器中不存在这个值