JavaScript NPM 版本号比较算法及代码实现
比较 npm 版本号的逻辑如下:
- 将版本号按照小数点拆分为数组;
- 依次比较数组中每个位置的数值大小,从左到右比较,直到出现不同的数值为止;
- 若左边的数值大于右边的数值,则左边版本号大于右边版本号,反之亦然;
- 若所有数值都相同,则比较版本号长度,长度长的版本号大于长度短的版本号。
以下是比较 npm 版本号的示例代码:
function compareVersion(version1, version2) {
let arr1 = version1.split('.');
let arr2 = version2.split('.');
let len1 = arr1.length;
let len2 = arr2.length;
let len = Math.max(len1, len2);
for (let i = 0; i < len; i++) {
let num1 = parseInt(arr1[i] || 0);
let num2 = parseInt(arr2[i] || 0);
if (num1 > num2) {
return 1;
} else if (num1 < num2) {
return -1;
}
}
return len1 - len2;
}
// 测试示例
console.log(compareVersion('1.2.3', '1.2.4')); // -1
console.log(compareVersion('1.2.3', '1.2.3')); // 0
console.log(compareVersion('1.2.3.4', '1.2.3')); // 1
console.log(compareVersion('1.2', '1.2.0')); // 0
console.log(compareVersion('1.0.0', '1')); // 0
以上代码通过 split() 方法将版本号拆分为数组,然后遍历比较每个位置的数值大小,最后根据比较结果返回相应的值。若版本号长度不同,则比较长度,长度长的版本号大于长度短的版本号。
原文地址: http://www.cveoy.top/t/topic/oCJ9 著作权归作者所有。请勿转载和采集!