俩软件版本号比较

这篇博客介绍如何实现一个JavaScript函数compareVersion,用于比较两个版本号。根据版本号规则,如果version1大于version2则返回1,小于则返回-1,相等则返回0。示例中给出了不同比较情况的结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现一个方法,用以比较两个版本号(version1, version2)大小。如果version1 > version2,返回 1;如果version1 < version2,返回 -1;其他情况返回0。版本号规则x.y.z,xyz 均为大于等于 0 的整数,且至少有 2 位。
示例:
// compareVersion(‘0.1’, ‘1.1.1’); // 返回-1
// compareVersion(‘13.37’, '1.2 '); // 返回1
// compareVersion(‘1.1’, ‘1.1.0’); // 返回0
function compareVersion(version1, version2) {}

const versionReg = function (version) {
      const reg = new RegExp(/^[0-9](\d+)?(.\d+){1,2}$/)
      if (!reg.test(version)) {
        const error = new Error('版本号规则`x.y.z`,xyz 均为大于等于 0 的整数,且至少有 2 位')
        throw error.message;
      }
    }
    var compareVersion = function (version1, version2) {

      versionReg(version1);
      versionReg(version2);

      const v1 = version1.split('.').map(item => Number(item));
      const v2 = version2.split('.').map(item => Number(item));

      const is = v1.length - v2.length;

      if (is <= 0) {
        for (let i = 0; i < -is; i++) {
          v1.push(0)
        }
      } else {
        for (let i = 0; i < is; i++) {
          v2.push(0)
        }
      }

      for (let i = 0; i < v1.length; i++) {
        for (let k = 0; k < v2.length; k++) {
          if (i == k) {
            if (v1[i] == v2[k]) break;
            if (v1[i] > v2[k]) return 1;
            if (v1[i] < v2[k]) return -1;
          }
        }
      }
      return 0;
    };

    // compareVersion('0.1', '1.1.1'); // 返回-1
    // compareVersion('13.37', '1.2 '); // 返回1
    compareVersion('1.1', '1.1.0'); // 返回0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值