js最新随机字符串,进制数随机字符串,更优秀的随机字符串方式,你绝对没用过的随机字符串方式,可控制位数!

js最新随机字符串,进制数随机字符串,更优秀的随机字符串方式,你绝对没用过的随机字符串方式,可控制位数!

函数封装和传参

首先我们,要封装这样一个函数,首先要确定,传入哪些参数。

  1. 字符串的长度

就这一个参数就可以了,现在是这样!

function randomString(len=6){

}

随机数转字符串

数字转字符串,有两种方式!一种把所有随机字符,定义成为一个数组,例如

const arr = '1234567890qwertyuiopasdfghjklzxcvbnm'.split('')

第二步

function randomString(len=6){
	const arr = '1234567890qwertyuiopasdfghjklzxcvbnm'.split('')
    let text = ''
    for(let i =0;i<len;i++){
        const randomInt = parseInt(Math.random()*len)
        if(randomInt>=arr.length){
            text+=arr[arr.length-1]
            continue;
        }
        text+=arr[randomInt]
    }
    return text
}

但是这种方式是最传统的,且代码冗长,不是我们想要的!

接下来就是压轴的,我们最新颖的方式,进制数转随机字符串!

首先我们知道,进制是缝进制顶上的数字就进一,二进制是缝二进一,比如2转成二进制就是11。通常我们使用的颜色进制码大家都知道,是16进制,就已经存在字符串了。其实传统十进制以上,就已经存在字符串了。

重点

那我们想要在随机字符串出现全的字母怎么办呢,我们知道英语字母一共26个,十进制以上才会有字母。那么我们把随机出来的数字转成

36进制即可,怎么做呢!

Math.random().toString(36)

看到没,就是如此简单,没想到吧!

然后这样出来可以吗,肯定不行,还是没想到吧!

js最新随机字符串,进制数随机字符串,更优秀的随机字符串方式,你绝对没用过的随机字符串方式,可控制位数!_第1张图片

这样出来的结果可能是'0.d3v9gd3wxr5'这种的,前面还有0和小数点,那然后怎么去掉呢!你是不是也没猜到,其实也非常简单!

function randomString(len=6){
	Math.random().toString(36).substring(2,len)
}

但是这种情况存在问题,有没有可能你随机出来的数字长度不满足你len传入的数字,那怎么办呢?

js最新随机字符串,进制数随机字符串,更优秀的随机字符串方式,你绝对没用过的随机字符串方式,可控制位数!_第2张图片

你别慌,我有办法,可以在最后面补充0

function randomString(len=6){
	Math.random().toString(36).substring(2,len).padEnd(len,'0')
}

但是如果len太长,你全补充0是不是不太好,太不自然了,那有没有办法呢?你是不是拿它没办法了!

js最新随机字符串,进制数随机字符串,更优秀的随机字符串方式,你绝对没用过的随机字符串方式,可控制位数!_第3张图片

别慌,我有办法!经过测试,Math.random().toString(36).length最低的长度基本是11位,那么我们可以判断11位如果都不到就补0,如果超了11位,就递归调用自己,直到满足len即可!

function randomString(len=6){
  if(len<=11){
    return Math.random()
    .toString(36)
    .substring(2,2+len)
    .padEnd(len,'0')
  }
  return randomString(11)+randomString(len-11)
}

恭喜你,这样就做到最完美了!

你可能感兴趣的:(javascript,前端,算法)