封装函数制做四位的随机且不重复的验证码

需求

咱们的验证码是在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时说明这个容器中不存在这个值索引

相关文章
相关标签/搜索