JavaScript 版本号排序算法实现
JavaScript 版本号排序算法实现
给定一个版本号数组,例如:'0.1.1', '2.3.3', '0.302.1', '4.2', '4.3.5', '4.3.4.5',需要对其进行排序,并将排序结果按照降序排列,最终结果为:'4.3.5', '4.3.4.5', '2.3.3', '0.302.1', '0.1.1'。
可以使用以下 JavaScript 代码实现这个排序算法:
function versionSort(arr) {
return arr.sort(function(a, b) {
var aArr = a.split('.');
var bArr = b.split('.');
var len = Math.max(aArr.length, bArr.length);
for(var i = 0; i < len; i++) {
var aNum = parseInt(aArr[i]) || 0;
var bNum = parseInt(bArr[i]) || 0;
if(aNum !== bNum) {
return bNum - aNum;
}
}
return 0;
});
}
var versions = ['0.1.1', '2.3.3', '0.302.1', '4.2', '4.3.5', '4.3.4.5'];
var sortedVersions = versionSort(versions);
console.log(sortedVersions); // ['4.3.5','4.3.4.5','2.3.3','0.302.1','0.1.1']
代码解析:
versionSort(arr)函数接受一个版本号数组作为参数。- 使用
arr.sort(function(a, b) { ... })对数组进行排序,排序逻辑在匿名函数中实现。 a.split('.')和b.split('.')将两个版本号字符串拆分成数组,例如'4.3.5'会被拆分成['4', '3', '5']。Math.max(aArr.length, bArr.length)获取两个数组的最大长度,用于循环遍历。- 使用
parseInt(aArr[i]) || 0和parseInt(bArr[i]) || 0将每个数字字符串转换为数字,如果遇到非数字字符串,则使用 0 作为默认值。 - 如果两个数字不同,则返回
bNum - aNum,实现降序排序。 - 如果所有数字都相同,则返回 0,表示这两个版本号相同。
sortedVersions变量存储排序后的版本号数组。console.log(sortedVersions)打印排序后的结果。
代码示例:
// 测试用例
var versions = ['0.1.1', '2.3.3', '0.302.1', '4.2', '4.3.5', '4.3.4.5'];
var sortedVersions = versionSort(versions);
console.log(sortedVersions); // ['4.3.5','4.3.4.5','2.3.3','0.302.1','0.1.1']
注意: 该代码实现了降序排序,如果需要升序排序,只需要将 bNum - aNum 改为 aNum - bNum。
希望以上内容对您有所帮助。
原文地址: https://www.cveoy.top/t/topic/lOMw 著作权归作者所有。请勿转载和采集!