js 数字转中文

numToChinese(num) {
  let numArr = ["零","一","二","三","四","五","六","七","八","九"];
  let numLimit = ["亿","万",""];//设置数字上限
  let numUnit = ["千","百","十",""];
  //num四位数是一个阶段对应 numLimit 每个阶段对应一个 numUnit,每个数字对应numArr。
  num = num.toString();
  num = num.split('');
  while (num.length < numLimit.length*4){
    num.unshift('');
  }
  // console.log(num)
  let numLength = num.length;
  let str = "";
  let limit = Math.ceil(numLength/4);
  // console.log(limit)
  for(let i = 1;i <= limit;i++){
    let start = (i -1) * 4;
    let end = i * 4;
    let limitNum = num.slice(start,end);
    // console.log(limitNum)
    for(let j = 0;j <limitNum.length ;j++){
      if(limitNum[j]!==''){
        let char = numArr[limitNum[j]];
        let unit = numUnit[j];
        if(limitNum[j] == 0){
          unit = '';
        }
        str += char+unit;
      }
    }
    let hasValue = limitNum.filter(val=>{
      return val!=='';
    });
    str = str.replace(/(零{2,})/,'零');//中间超过两个零替换为一个零
    if(str!=='零'){
      str = str.replace(/(零*)$/,'');//结尾去掉零
    }
    if(hasValue.length > 0){
      str+=numLimit[i-1];
    }
  }

  str = str.replace(/^一十/,'十');
  return str;
}
原文地址:https://www.cnblogs.com/xiongK/p/14821385.html