封裝函數製作四位的隨機且不重複的驗證碼

NO IMAGE

需求

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

相關文章

任意數求和解析

用正則驗證身份證,手機號的合法性(寬鬆)

call、apply、bind學不會,來砍我!!!!——輕生前端

選項卡的製作