string/numToChinese.js

/**
 * @alias yd_string_numToChinese
 * @category string
 * @param {number} num - 需要转换为中文数字的数字。
 * @param {string} [type='simplified'] - 'simplified' 转换为简体中文;  'financial' 转换为繁体中文。
 * @returns {string} - 返回转换后的中文。
 * @author penn <https://github.com/penn201500>
 * @summary 该函数接收一个数字,将其转换为中文数字。默认转换为简体中文,也可以选择转换为繁体中文。
 * @example
 * yd_string_numToChinese(12345); // 一二三四五
 * yd_string_numToChinese(12345, 'financial'); // 壹贰叁肆伍
 * @description 将数字转换为中文数字。
 */

export default (num, type = 'simplified') => {
    if (typeof num !== 'number') {
        throw new TypeError('num 必须是一个数字');
    }

    if (type !== 'simplified' && type !== 'financial') {
        throw new TypeError('type 必须是 "simplified" 或 "financial"');
    }

    const simplified = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
    const financial = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];

    const mapping = type === 'simplified' ? simplified : financial;

    return num
        .toString()
        .split('')
        .map((digit) => {
            const parsedDigit = parseInt(digit);
            if (isNaN(parsedDigit)) {
                throw new TypeError('num 必须是一个数字');
            }
            return mapping[parsedDigit];
        })
        .join('');
};