相比于上一版把大小写和数字都罗列出来,这次使用了unicode码,比较方便
<script>
function arr(n) {
///// 先打印出随机数要的数字中英文大小写 ////////
var arr1 = [];//数字
for (var i = 0; i <= 9; i++) {
arr1.push(i);
}
var arr2 = [];//英文小写
for (var i = 97; i <= 122; i++) {
arr2.push(String.fromCharCode(i));
// push在数组的结尾追加一个或者多个的数据
// string.fromcharcode将unicode码转成对应的字符(i)
}
var arr3 = [];//英文大写
for (var i = 65; i <= 90; i++) {
arr3.push(String.fromCharCode(i));
}
// 拼接成一组
var arr4 = arr1.concat(arr2, arr3);
console.log(arr4);//测试是否成功
////////////////////////////////////////结尾
// 给一个验证码的长度
var res = '';
// 给个空字符串,给返回值,在函数外也可以生效
for ( i = 0; i < n; i++) {
// 循环 形参n次,自己给n实参。
var a = rand(0, arr4.length - 1);
// 给四次随机数,最大值在上面写的数字英文大小写里的数组里
res += arr4[a];
// 中英文大小写的随机数给到res
console.log(res)
// 测试是否生效
}
// 因为中英文大小写随机数可以出现四个英文,想要里面百分之百包含数字。
// 思路:先搞一个数字,再随机一个位置,然后替换
var num = rand(0, 9);
// 随机数
var pos = rand(0, res.length - 1);
// 随机数 最小值为零 最大值为res的最大长度
res = res.replace(res[pos], num);
// 替换
// console.log(res)
return res
}
//用函数包装一个随机数,方便直接调用
function rand(min, max) { // 包装一个随机数,可以自己随意给大小
return Math.round(Math.random() * (max - min)) + min;
}
</script>