随机生成一个 1至100000的整数,并把数值转换为中文数字
/* /* 随机生成一个 1至100000的整数,并把数值转换为中文数字。
例: 99999 = 九万九千九百九十九*/
function generateNum(){
return Math.floor((Math.random()*(100000-1)+1))
}
// console.log(generateNum())
const num2char = ['零','一','二','三','四','五','六','七','八','九']
const key2char = ['','十','百','千','万','十万']
function main(){
let num = generateNum();
console.log(num)
let numArr = []; //存放每一位上策数字,[1,2,3,4,5] = 54321
// num%10 个位
while(num){
let temp = num%10;
numArr.push(temp);
num = Math.floor(num/10);
}
let resStr = '';
for(let key in numArr){
//key numArr[key]=val
let val = numArr[key];
if(key2char[key] != undefined){
let curr = '';
if(val == 0){
if(key == 0){
//最后一位为0,可以不读 curr=''
}else{
//中间位为0可以不加单位,但是零要读(重复的0还是要再处理)
if(resStr[0] == '零'){
//因为数是从小往大的拼接起来的,所以在此次读到零的时候,直接看后面要拼的字符串的开头是不是零
//是零,直接跳过这次的加零 curr=''
}else{
curr = num2char[val];
}
}
}else{
curr = num2char[val] + key2char[key];
}
resStr = curr + resStr;
}
}
//最后得到resStr之后看indexOf('零'),如果尾巴只有零,就裁剪掉 60000这种情况
if(resStr.indexOf('零') ==resStr.length-1){
resStr = resStr.slice(0,-1)
}
return resStr;
}
console.log(main())