UNPKG

t-comm

Version:

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

48 lines (46 loc) 1.28 kB
/** * 版本比较 * @param {string} v1 第一个版本 * @param {string} v2 第二个版本 * @returns 比较结果,1 前者大,-1 后者大,0 二者相同 * @example * ```ts * compareVersion('1.1.1', '1.2.1') * // -1 * ``` */ function compareVersion() { var v1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var v2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; var trimmedV1 = trimVersion(v1); var trimmedV2 = trimVersion(v2); // 处理空字符串的情况 if (!trimmedV1 && !trimmedV2) return 0; if (!trimmedV1) return -1; if (!trimmedV2) return 1; var v1List = trimmedV1.split('.'); var v2List = trimmedV2.split('.'); var len = Math.max(v1List.length, v2List.length); while (v1List.length < len) { v1List.push('0'); } while (v2List.length < len) { v2List.push('0'); } for (var i = 0; i < len; i++) { var num1 = parseInt(v1List[i], 10); var num2 = parseInt(v2List[i], 10); if (num1 > num2) { return 1; } if (num1 < num2) { return -1; } } return 0; } function trimVersion() { var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; return str.replace(/^[\^|~]/, ''); } export { compareVersion };