t-comm
Version:
专业、稳定、纯粹的工具库
48 lines (46 loc) • 1.28 kB
JavaScript
/**
* 版本比较
* @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 };