使用 JS 如何生成一个随机字符串
更多描述
random
接收一个整数作为随机数的个数,最多生成8个随机数
// 'a839ac'
random(6);
// '8abc'
random(4);
Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 637
Author 回答者: shfshanyue
const random = (n) =>
Math.random()
.toString(36)
.slice(2, 2 + n);
random();
// => "c1gdm2"
random();
// => "oir5pp"
Author 回答者: wangjs-jacky
山月老师给出的答案:使用 Math.random
产生的随机数进行 36 进制转化,该随机数是由0-9,a-z 构成的。
还有一种方案是对大写字母,小写字母以及数字的 ASCII 码进行转化。
random_v1(4);
random_v1(6);
// ASCII:
// 大写字母:65~90
// 小写字母:97~122
// 数字:48-57
function random_v1(num: number) {
let b = new Array(num)
.fill(0)
.map(() => String.fromCharCode(generateAcsii()))
.join("");
console.log(b);
}
function generateAcsii() {
// 生成 [65,90] && [97,122] && [48,51]
let a = Math.floor(Math.random() * 62); // [0,62]
if (a < 26) {
// 返回 大写字母 的 ASCII
return a + 65;
} else if (a >= 26 && a < 52) {
// 返回 小写字母 的 ASCII
return a - 26 + 97;
} else {
// 返回 数字 的 ASCII
return a - 52 + 48;
}
}