前端实现一、二、三、四这样的自增

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的情况,比如1200120312035000000301010903310009003

情况1: 分组后,每组最后一个数不加零

上一篇下一篇

猜你喜欢

热点阅读