需要清楚的是 基础数字所对应的大写、数字所在位置的量级、金额所对应的单位
主要思路是:
- 将数字分为整数部分和小数部分分别处理
- 对于数字处理从前往后走,一个一个往后加所以先处理整数再处理小数
- 处理时都需要知道数字所对应的大写
- 整数处理 先把所有数字的大写 放进去 然后按照写好的从后往前追加 量级
- 小数部分直接是 金额单位 从前往后加上就好
function convertCurrency(values){
if(!values){
values = 0
}
values = (+values).toFixed(2)
let moneymax = values.split('.')[0]//整数部分
let moneymin = values.split('.')[1]//小数部分
let len=moneymax.length//统计出整数部分长度
let arr=[];
let str2 = ''
let chin_list=['零','壹','贰','叁','肆','伍','陆','柒','捌','玖']//数字部分的0-9
//拼凑结构 千亿 百亿 十亿 亿 千万 百万 十万 万 千 百 十 个
let chin_lisp=['仟','佰','拾','亿','仟','佰','拾','万','仟','佰','拾']
for(let i=0;i<len;i++){//整数部分 从前往后
arr.push(parseInt(values[i]));
arr[i]=chin_list[arr[i]]//数字对应大写汉字 纯数字无量级 类似 54321→ 伍肆叁贰壹,但实际应该是→伍万肆仟叁佰贰拾壹
}
for(let i=len-1,j=1;i>0;i--){//以整数部分 为基础 j从后往前追加量级
arr.splice(i,0,chin_lisp[chin_lisp.length-j++])//添加量级
}
let arr2=JSON.parse(JSON.stringify(arr))
for(let i=0;i<arr.length;i++){
if(arr[i]=='零'){
arr2[i+1]=''
}
}
for (var i = 0; i < moneymin.length; i++) {//小数部分
str2 += chin_list[moneymin[i]];//数字对应大写汉字 纯数字无单位 类似 43→ 肆叁,但实际应该是→ 肆角三分
}
str2 = str2[0] +'角' +str2[1] + '分'
arr2=arr2.join('')
arr2+='元'
return arr2 + str2
}
复习点:
一、splice() 方法
1、定义和用法
splice()
方法用于添加或删除数组中的元素。
注意:这种方法会改变原始数组。
2、返回值
如果删除一个元素,则返回一个元素的数组。 如果未删除任何元素,则返回空数组。
如果从
arrayObject
中删除了元素,则返回的是含有被删除的元素的数组。
3、语法
array.splice(index,howmany,item1,.....,itemX)
index
:必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素的下标,必须是数字。howmany
:可选。规定应该删除多少元素。必须是数字,但可以是 “0”。如果未规定此参数,则删除从index
开始到原数组结尾的所有元素。item1, ..., itemX
:可选。要添加到数组的新元素
3.1 删除
那么常规写完整就是 array.splice(下标,删除数量,要添加的新元素)
用的比较多的是删除功能 前两项参数很常规
arr.splice(index)
arr.splice(index,howmany)
3.2新增
新增的话就是
arr.splice(index,0,item)//一个
arr.splice(index,0,item1,.....,itemX)//多个
那么
arr.splice(i,0,chin_lisp[chin_lisp.length-j++])
的基本结构就是新增的基本结构arr.splice(i,0,item)
,这里的item
是chin_lisp[chin_lisp.length-j++]
3.3 替换
替换某项→先删除 再把新的放进去 那就是
arr.splice(index,1,item)//一个
arr.splice(index,1,item1,.....,itemX)//多个
二、join() 方法
1、定义和用法
join() 方法用于把数组中的所有元素转换一个字符串。
元素是通过指定的分隔符进行分隔的。
2、返回值
- String,返回一个字符串。该字符串是通过把
arrayObject
的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入separator
字符串而生成的。
3、语法
array.join(separator)
- separator:可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。