前端实现一、二、三、四这样的自增
2020-08-31 本文已影响0人
小遁哥
业务中出现了"一级属性"、"二级属性"、"三级属性",因为最多就三级,所以我就
const strs = ['一', '二', '三'];
那么能不能实现一、二、三、四... 这样的自增呢?
我想到了
"一".charCodeAt()
19968
紧接着
"二".charCodeAt()
20108
然而
"三".charCodeAt()
19977
"四".charCodeAt()
22235
"五".charCodeAt()
20116
"六".charCodeAt()
20845
好吧,让我们总结下规律
单个数字
一、二、三、四、五、六、七、八、九
两个数字
一十二、九十、四十八
三个数字
一百、一百零七、一百二十八
哇哦,像极了递归模式,似乎,从左至右依次处理每个数字,根据其所在的位置转换为对应的字符串,最后拼接即可
举个列子
23
2=>二十
3=>三
二十三
123
1=>一百
2=>二十
3=>三
一百二十三
103
1=>一百
2=>零
3=>三
然而当位数增到五位时,情况又会有些变化
12345
一万二千三百四十五
123456
一十二万三千四百五十六
1234567
一百二十三万四千五百六十七
就处理到千万吧
要四个数分为一组,递归递中归,这不仅让我想到了那个面试题,千分位字符,"1234"=>"1,234",没想到有生之年在不是面试的时候Q到,缘分啊...,还好我记笔记了
好的,已经完成98%了,不过还有以下几点需要处理
四位一组时,有的组不足4位,怎么加"千"、"百",分组时只有一组时,处理加"万"
还有处理0的情况,比如1200 、1203、1203、50000003、0、10、109033、10009003
情况1: 分组后,每组最后一个数不加零