js 随机生成一个五位以内的数,然后输出该数共有多少位,每位分别是什么
记录并且介绍四种方法,而且会详细说明由来以及原因,只是一个学习的记录,请各位指正。
第一种:用的是Math.random乘100000来输出五位数,并不推荐,代码量大,而且并不是最优选择。
var num = parseInt(Math.random()*100000)//首先创建一个五位数的随机数(Number)
console.log(num)//打印出来
//把每一位都单独提出来
var one = parseInt(num/10000);
var two = parseInt(num/1000%10);
var thr = parseInt(num/100%10);
var four= parseInt(num/10%10);
var fif = num % 10;
//倒着输出一下
var arr = [fif,four,thr,two,one]
//循环删除最后的0,这个方法笨一点,if嵌套判断
for(var i = 0;i<arr.length;i++){
if(Number(arr[4])===0){
arr.pop()
// console.log(arr,arr.length)
if(Number(arr[3])===0){
arr.pop()
// console.log(arr,arr.length)
if(Number(arr[2])===0){
arr.pop()
// console.log(arr,arr.length)
if(Number(arr[1])===0){
arr.pop()
}else{break}
}else{break}
}else{break}
}else{
break;
}
}
//输出arr这个数组,并且输出长度
console.log(arr,arr.length)
//接下来输出每一位
console.olg(arr[0],...)
第二种:用的是Math.random乘100000来输出五位数,然后利用循环来让五位数的每一位输入到数组,需要注意的是如果等于0,需要跳出本次循环。
var arr = [];//首先利用字面量生成一个空数组
//利用Math.random乘100000来生成五位数(Number)
var random_num = parseInt(Math.random() * 100000);
//打印出来看一看
console.log(random_num);
//设置一个名为count的记录变量
var count = 0;
//for循环来为arr空数组来赋值
for(var i = 0; i < 5; i++){
//给这个五位数(Number)求模,第一次循环的时候是个位,第二次循环时十位...
var res = random_num % 10;
//如果求模等于0,证明这次生成的数为0,退出本次循环
if(random_num === 0){
continue;
}
//每一次循环都/10,然后求整,为了下一次循环求模创造条件
random_num = parseInt(random_num / 10);
//把每一次求模得到的数添加到数组
arr.push(res);
//count记录变量记录添加的次数
count++;
}
console.log(count);
console.log(arr);
console.log(arr[0],...)
第三种:这种方法比较绕一点,但是和上面俩种思想不一样
利用的是生成随机数组个数然后再填入随机数
//先创建函数来封装这个方法
function getRnadomFiveInt(){
//创建空数组
var temp = [];
//for循环来生成随机五个数组元素,有可能是五个||四个||其他
for(var i = 0 ; i < 1 + parseInt( Math.random() * 5) ; i ++){
//生成一个random_int的变量来存放0-9的随机数
var random_int = parseInt( Math.random() * 10 );
//如果这个数组为0位||生成的随机数为0,random_int被赋值为random_int+0-9的随机数然后求模
if( i === 0 && random_int === 0 ){
random_int = (parseInt( Math.random() * 10 ) + random_int) % 10;
}
//在temp空数组中添加随机数
temp.push( random_int );
}
//输出数组,数组长度,并且输出数组的每一位直接添加-号
console.log(temp , temp.length , temp.join("-"));
}
//执行函数
getRnadomFiveInt();
第四种:这一种和上一种的思想基本一样,不同的是这种利用了递归思想
//先创建函数来封装这个方法
function getRnadomFiveInt(){
//创建空数组
var temp = [];
//for循环来生成随机五个数组元素,有可能是五个||四个||其他
for(var i = 0 ; i < 1 + parseInt( Math.random() * 5) ; i ++){
//生成一个random_int的变量来存放0-9的随机数
var random_int = parseInt( Math.random() * 10 );
//如果这个数组为0位||生成的随机数为0,返回函数,利用递归来继续循环
if( i === 0 && random_int === 0 ){
return getRnadomFiveInt();
}
//在temp空数组中添加随机数
temp.push( random_int );
}
//输出数组,数组长度,并且输出数组的每一位直接添加-号
console.log(temp , temp.length , temp.join("-"));
}
//执行函数
getRnadomFiveInt();
上面四种方法只是自己遇到这样的题思考得出,并不代表全部,如果还有其他比较好玩的方法,欢迎留言