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

需求

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

相關文章
相關標籤/搜索