| | |
| | | return new URL(url, import.meta.url).href |
| | | } |
| | | |
| | | /** |
| | | * @description 格式化数字,在三位之间加逗号 |
| | | * @param {String|Array} value 字符串形式的数字或数字字符串数组 |
| | | * @returns {String|Array} 格式化后的字符串或数组 |
| | | * @example |
| | | * formatNumberWithComma("1000") // "1,000" |
| | | * formatNumberWithComma(["1000", "2000"]) // ["1,000", "2,000"] |
| | | */ |
| | | export const formatNumberWithComma = (value) => { |
| | | if(value === null || value === undefined) return value; |
| | | // 格式化单个数字字符串 |
| | | const formatSingleNumber = (num) => { |
| | | // 转换为字符串并移除已有逗号 |
| | | const str = String(num).replace(/,/g, ''); |
| | | // 转换为数字进行验证和格式化 |
| | | const numValue = Number(str); |
| | | if (isNaN(numValue)) { |
| | | return str; |
| | | } |
| | | // 保留两位小数并转换为字符串 |
| | | const fixedValue = numValue.toFixed(2); |
| | | // 分离整数部分和小数部分 |
| | | const parts = fixedValue.split('.'); |
| | | // 对整数部分添加逗号(从右往左每三位加一个逗号) |
| | | parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ','); |
| | | // 合并整数和小数部分 |
| | | return parts.join('.'); |
| | | }; |
| | | |
| | | // 如果是数组,处理数组中的每个元素 |
| | | if (Array.isArray(value)) { |
| | | return value.map(item => formatSingleNumber(item)); |
| | | } |
| | | |
| | | // 如果是字符串或数字,直接处理 |
| | | return formatSingleNumber(value); |
| | | } |
| | | |