收藏:js实现123456789转一亿二千三百四十五万六千七百八十九

80 阅读1分钟

图书馆系列-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, '');
}