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 , 说明前者小于后者
复制代码

 

posted @   蓓蕾心晴  阅读(1091)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示