咱們的驗證碼是在a-z,A-Z,0-9這62個數字或者字母中隨機選出4個且這四個字母或者數字不重複做爲驗證碼bash
一、 咱們須要這62個字母或者數字中隨機的四個 ,咱們能夠利用 Math.random()
這個是取0-1中的隨機數 咱們須要用隨機數0-61做爲這62個字符大字符串的隨即索引,dom
2 、可是Math.random()
整數小數都會取,因此咱們須要用Math.round()
這個函數使隨機數四捨五入得Math.round(Math.random())
函數
三、 由於咱們取的是0-61之間的隨機數因此咱們須要將這個值*61, 因此得Math.round(Math.random()*61)
這個就是咱們所須要的這個大字符串的索引ui
四、 其次咱們須要一個容器來盛裝這4個隨機的字符 且裏邊不能有重複的字符串, 這時咱們須要使用ofIndex===-1
由於當ofIndex===-1時說明這個容器中不存在這個值spa
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
}
複製代碼
一、如何獲取n-m之間的一個隨機整數: Math.round(Math.random()*(m-n)+n
利用Math中round和random獲取code
二、如何令這個容器中不出現重複s.indexOf(str[n])===-1
當ofIndex===-1時說明這個容器中不存在這個值索引