/** * 数字金额转化大写金额 * @param {string} number 转义金额 * @returns {string} 转义结果 */ function filter(number) { // 大写数组 const numZh = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']; // 单位 const unit = ["拾", "佰", "仟", "万", "亿"]; // 是否重复出现亿单位(默认:重复) const isBillon = true; // 0开头的字符串不符合数字规则,规范化字符串 number = number.toString().replace(/^(['0']+)&/, '') // console.log('数据 ###', number) // 数字转换大写 const num = number.split('').map(item => item = numZh[item]) // 翻转数组 const reverseArr = num.reverse(); // 单位亿,默认重复一次 let _isRepeat = 1; // 单位叠加 for (let i = 1; i < reverseArr.length; i++) { // 零不参与单位叠加,跳过本次循环 if (reverseArr[i] === '零') { if (i % 8 === 0) { // 对于单位亿的保留 reverseArr[i] = unit[4] } else if (Math.abs((i - 1) % 4) === 3) { // 对于单位万的保留 reverseArr[i] = unit[3] } if (unit.includes(reverseArr[i - 1])) { reverseArr[i] = '' } console.log(i, reverseArr[i]) continue; } // 针对单位‘亿’的特殊处理 if (i >= 8 && i % 8 === 0) { // 亿单位是否重复的开关 _isRepeat++; reverseArr[i] = reverseArr[i] + (_isRepeat >= 1 ? unit[4] : unit[3]) } else { reverseArr[i] = reverseArr[i] + unit[Math.abs((i - 1) % 4)] } } let res = reverseArr.reverse().join(''); // 对零的处理(整数金额,及内涵多个零金额) res = res.replace(/['零']+/g, '零').replace(/(['零']+)$/g, '') return res + '元' }
数字金额转化大写金额函数
最新推荐文章于 2024-07-09 21:02:55 发布