图书馆系列-js实现123456789转一亿二千三百四十五万六千七百八十九
场景
敲完工作代码,遇到个群里有人问有没有好的123456789转一亿二千三百四十五万六千七百八十九的方法。正好拿来放松下。
解决
const n = 123456789;
const zh = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
const unit = ['个', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千', '万亿'];
const zhn = [...String(n)].map(n => zh[parseInt(n, 10)]).join(''); // 就能获得一二三四五六七八九
const l = zhn.length;
const result = [...zhn].map((n, i) => `${n}${unit[l-i-1]}`).join('').replace(/个/g, ''); // '一亿二千三百四十五万六千七百八十九'
封装下:
function numToZHN(n) {
if (typeof n !== 'number') return n;
const zh = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
const unit = ['个', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千', '万亿'];
const strArr = [...String(n)];
const l = strArr.length;
// 将数字转中文
return strArr.map((n, i) => `${zh[parseInt(n, 10)]}${unit[l-i-1]}`).join('').replace(/个/g, '');
}