项目场景:
通常这种情况下,后端返回是数组,如果想要把数组这样显示出来,就需要把数组的索引值转换为汉字显示。如,11显示为十一,21显示为二十一
实现代码讲解
NoToChinese(num) {
//如果传递过来的值不是数据类型,则直接报错
if (!/^\d*/.test(num)) {
alert('Number is wrong!');
return 'Number is wrong!';
}
//将需要用到的汉字存放在数组中
var AA = new Array(
'零',
'一',
'二',
'三',
'四',
'五',
'六',
'七',
'八',
'九'
);
var BB = new Array('', '十', '百', '千', '万', '亿');
//将数值转换为字符串并且将字符串中以0开头的字符去掉,把得到的字符串以“.”分割成字符串数组
var a = ('' + num).replace(/(^0*)/g, '');
//变量用来存储转换后的结果
var re = '';
//变量存储数值为零的情况
var zero=''
//把整数部分转为汉字
for (var i =0 ; i <=a.length - 1; i++) {
if(a.charAt(i) ==0){
zero=AA[0]
}else{
zero=''
}
//如果单个字符不是零并且不是最后一个字符
if (a.charAt(i) != 0&&i!=a.length-1)
re = re+zero+AA[ a.charAt(i)]+BB[a.length-1-i]
//当是最后一个字符时,直接使用数组AA
if(i==a.length-1){
//如果数字是204,当数值0后只有一位数时,则需要加上零
if(a.charAt(i-1) ==0){
re=re+zero+AA[a.charAt(i)]
}else{
re=re+AA[a.charAt(i)]
}
}
//结束循环
}
//如果遇到10-19需要特殊处理
if(Math.floor(num/10)===1){
re=re.substr(1)
}
return re;
},