UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

218 lines (214 loc) 4.68 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); /** * 获取相对于过去数据的比例 * @param {number} value 当前数据 * @param {number} preValue 之前数据 * @returns {string} 比例 * * @example * * getUnitPreviousRatio(1, 0) * // +999+% */ function getUnitPreviousRatio(value, preValue) { var interval = value - preValue; var symbol = interval > 0 ? '+' : ''; if (preValue === 0) { preValue = 0.01; } var intervalRatio = (interval / preValue * 100).toFixed(1); if (+intervalRatio > 999) { intervalRatio = '999+'; } return "".concat(symbol).concat(intervalRatio, "%"); } /** * 获取占比 * @param {number} summary 总数据 * @param {number} part 部分数据 * @returns {number} 比例 * @example * getRatio(0, 1) * // 0 * * getRatio(1, 0) * // 0 * * getRatio(1, 1) * // 100 * * getRatio(1, .5) * // 50 */ function getPartRatio(summary, part) { if (!summary) return 0; if (!part) return 0; return +(part / summary * 100).toFixed(2); } /** * * 阿拉伯数字和中文数字映射表,0 - 32 * @type {object} * @example * * console.log(NUMBER_CHI_MAP[1]); * // '一' * * console.log(NUMBER_CHI_MAP[2]); * // '二' */ var NUMBER_CHI_MAP = { 0: '零', 1: '一', 2: '二', 3: '三', 4: '四', 5: '五', 6: '六', 7: '七', 8: '八', 9: '九', 10: '十', 11: '十一', 12: '十二', 13: '十三', 14: '十四', 15: '十五', 16: '十六', 17: '十七', 18: '十八', 19: '十九', 20: '二十', 21: '二十一', 22: '二十二', 23: '二十三', 24: '二十四', 25: '二十五', 26: '二十六', 27: '二十七', 28: '二十八', 29: '二十九', 30: '三十', 31: '三十一', 32: '三十二' }; /** * 获取千分位分隔符 * @param {string | number} value 输入数字 * @returns {string} 处理后的数字 * * @example * * getThousandSeparator('123123123') * * // => 123,123,123 * * getThousandSeparator('12312312') * * // => 12,312,312 */ function getThousandSeparator(value) { var str = "".concat(value); // 分割整数和小数部分 var parts = str.split('.'); // 只对整数部分添加千分位分隔符 parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ','); // 重新组合整数和小数部分 return parts.join('.'); } /** * 获取千分位分隔符,处理数字之间有空格的情况 * @param {string | number} value 输入数字 * @returns {string} 处理后的数字 * * @example * getThousandSeparator2('12345678 123456789') * * // => 12,345,678 123,456,789 * */ function getThousandSeparator2(value) { var reg = /\B(?=(\d{3})+\b)/g; return "".concat(value).replace(reg, ','); } /** * 在区间内获取随机整数 * @param {number} min 最小值 * @param {number} max 最大值 * @returns 随机数 * * @example * ```ts * random(0, 19) // 1 * ``` */ function random(min, max) { if (min >= 0 && max > 0 && max >= min) { var gap = max - min + 1; return Math.floor(Math.random() * gap + min); } return 0; } function getRandomNumber(min, max) { var result = Math.random() * (max - min) + min; return result; } /** * 数字左侧加 0,直到满足长度要求 * @param {string | number} num 当前数字 * @param {number} [targetLength=2] 目标长度 * @returns {string} 新的字符串 * @example * ```ts * padZero(1, 3); // 001 * ``` */ function padZero(num, targetLength) { if (targetLength === void 0) { targetLength = 2; } var str = "".concat(num); while (str.length < targetLength) { str = "0".concat(str); } return str; } /** * add num and avoid float number * @param {number} num1 第1个数字 * @param {number} num2 第2个数字 * @returns {number} 结果 * @example * ```ts * addNumber(0.1, 0.2); // 0.3 * ``` */ function addNumber(num1, num2) { var cardinal = Math.pow(10, 10); return Math.round((num1 + num2) * cardinal) / cardinal; } /** * 根据边界值修正数字 * @param {number} num 待处理的数字 * @param {number} min 边界最小值 * @param {number} max 边界最大值 * @returns {number} 处理结果 * @example * ```ts * range(12, 1, 2); // 2 * ``` */ function range(num, min, max) { return Math.min(Math.max(num, min), max); } exports.NUMBER_CHI_MAP = NUMBER_CHI_MAP; exports.addNumber = addNumber; exports.getPartRatio = getPartRatio; exports.getRandomNumber = getRandomNumber; exports.getThousandSeparator = getThousandSeparator; exports.getThousandSeparator2 = getThousandSeparator2; exports.getUnitPreviousRatio = getUnitPreviousRatio; exports.padZero = padZero; exports.random = random; exports.range = range;