需求
我們的驗證碼是在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時說明這個容器中不存在這個值