编辑代码

let numChar = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
let numUnit = ['', '十', '百', '千'];
let numSection = ['', '万', '亿', '万亿', '亿亿'];

// 将数字映射成中文
function formatSection(num) {
  let arr = (num + '').split('').reverse();
  let str = '';
  for (let i = 0; i < arr.length; i++) {
    let char = arr[i] === 0 ? numChar[0] : numChar[arr[i]] + numUnit[i];
    str = char + str;
  }
  let s = str.replace(/零+/g, '零').replace(/零+$/, '');
  return s;
}

// 将字符串按个数拆分
function formatNum(num, str) {
  let len = Math.ceil(str.length / num);
  let arr = [];
  let reverseStr = str.split('').reverse().join('');
  for (let i = 0; i < len; i++) {
    let result = reverseStr
      .slice(i * num, i * num + 4)
      .split('')
      .reverse()
      .join('');
    arr.unshift(result);
  }
  console.log('++num', arr)
  return arr;
}

function numberTranToCN(num) {
  let arr = formatNum(4, num + '');
  let list = [];
  for (let i = 0; i < arr.length; i++) {
    let str = formatSection(arr[i]);
    list.push(str);
  }
  let reverseList = list.reverse();
// 补上区间单位
  for (let j = 0; j < reverseList.length; j++) {
    reverseList[j] += numSection[j];
  }
  return reverseList.reverse().join('');
}

console.log(numberTranToCN(12345));
console.log(numberTranToCN(1000003));