js里面通过Math.random可以生成随机的数字,那怎样生成随机的字符串呢?请往下看

function generateRandomAlphaNum(len) {
    var rdmString = "";
    for (; rdmString.length < len; rdmString += Math.random().toString(36).substr(2));
    return rdmString.substr(0, len);
}

巧妙利用toString方法,toString方法可以接收一个基数作为参数,这个基数从2到36封顶。如果不指定,默认基数是10进制。上面的随机字符串生成函数,通过Math.random()生成一个随机数,再通过toString函数指定基为36,将随机数转换为随机的字符串。

Math.random().toString(36)
"0.mexoii5r8tc323xr"
Math.random().toString(36).substr(2)
"mexoii5r8tc323xr"

改造一下,我们就可以得到一个通过js生成随机数的函数

function generateRandomAlphaNum(len) {
    var rdmString = "";
    for (; rdmString.length < len; rdmString += Math.random().toString().substr(2));
    return rdmString.substr(0, len);
}
generateRandomAlphaNum(5)
"85391"
generateRandomAlphaNum(10)
"4132368105"

再改造一下,通过参数指定是生成随机的字符串还是随机的纯数字串

function generateRandomAlphaNum(len,radix) {
    radix = radix ? 10 : 36;
    var rdmString = "";
    for (; rdmString.length < len; rdmString += Math.random().toString(radix).substr(2));
    return rdmString.substr(0, len);
}
generateRandomAlphaNum(16)
"0izorpc114z33dir"
generateRandomAlphaNum(16,1)
"2046840938273817"
generateRandomAlphaNum(16,'s')
"3525329900439828"

如果第二次参数不为null,则生成随机的纯数字串,否则生成随机的字符串。

转载请注明:知识蚂蚁 » javascript/js生成随机字符串函数

我来说说

(便于我们更好的交流)

有不明白的地方欢迎留言哦~
取消