js 实现版本号排序
// 方法一:从左到右迭代,从高位判断,返回高位的大小结果 注意:仅适用于版本号各个位的位数相同 let versions = ["1.45.0", "1.5", "6", "2.3.4.5"]; versions = versions.sort((a, b) => { let arr1 = a.split('.'); let arr2 = b.split('.'); let i = 0; while (true) { let s1 = arr1[i]; let s2 = arr2[i]; i++; if (s1 == undefined || s2 == undefined) { return arr1.length - arr2.length; } if (s1 == s2) { continue; } return s1 - s2; } }) console.log(versions); //[ '1.5', '1.45.0', '2.3.4.5', '6' ] // 方法二:全部转为小数,比小数的大小,注意:仅适用于版本号各个位的位数相同 let arr = ["3.1.4.512", "0.2.5.4", "0.2.23.456", "0.3.456", "1.0"]; arr.sort((a, b) => { return Number("0." + a.split(".").join("")) - Number("0." + b.split(".").join("")); }); console.log(arr); //[ '0.2.23.456', '0.2.5.4', '0.3.456', '1.0', '3.1.4.512' ]
参考链接:https://blog.csdn.net/jiong9412/article/details/124776279
// 方法三,通过 点 将版本号分割为数组,如果版本号长度不同,则填入 0,分别比较每一位的大小,可以准确判断每一位的大小 let compareVersion = function (v1, v2) { // console.log({v1, v2}) if (typeof v1 === "undefined" || typeof v2 === "undefined") { console.error('请指定要对比的两个版本号', {v1, v2}) return } v1 = v1.split('.') v2 = v2.split('.') const maxLength = Math.max(v1.length, v2.length) // 补全 while (v1.length < maxLength) { v1.push('0') } while (v2.length < maxLength) { v2.push('0') } for (let i = 0; i < maxLength; i++) { let num1 = parseInt(v1[i]) let num2 = parseInt(v2[i]) if (num1 > num2) { return 1 } else if (num1 < num2) { return -1 } } return 0 } compareVersion('0.5.1','0.302.1') // -1 , 说明前者小于后者
分类:
javascript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南