SOURCE

function numberToChanses(num) {
    if (typeof num !== 'number' || isNaN(num) || Math.floor(num) !== num || num < 0) {
        throw new Error('请输入大于0的整数')
    }
    const numChar = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
    const unitChar = ['', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千', '万', '十', '百', '千', '亿'];
    const charList = String(num).split('').reverse();
    let res = '';
    for (let i = 0; i < charList.length; i++) {
        const curNumChar = numChar[charList[i]];
        const curNumUnit = unitChar[i];
        res = `${curNumChar}${curNumUnit}${res}`;
    }

    res = res.replace(/零(千|百|十)/g, '零').replace(/十零/g, '十');
    res = res.replace(/^一十/, '十');
    res = res.replace(/零+/g, '零');
    res = res.replace(/零万/g, '万').replace('零亿', '亿');
    res = res.replace(/亿万/g, '亿');
    res = res.replace(/零+$/, '');

    return res;
}
const testNumber = [2, 10, 101, 1023, 30000, 30001, 2400060, 4234234234, 423423, 200000000, 2000000001, 20000000010]
for (let i = 0; i < testNumber.length; i++) {
    console.log(numberToChanses(testNumber[i]));
}
console 命令行工具 X clear

                    
>
console