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