Semver语义版本号对比

原理:

  1. 切割要对比的版本号;
  2. 取长度较长的版本 length 作为循环对比轮次;
  3. 从低位到高位(即从右到左),循环遍历每一位版本号,缺失则补0,对比大小,
  4. if num1 > num2: v1 > v2;
  5. if num1 < num2: v1 < v2;
  6. 重复步骤 3-5,直到循环结束;
  7. out 0,此时 版本号 v1 == v2
  8. 只要有一位不同,则可对比分出大小。若相同,则版本相等。

ts实现

/**
 *
 * @param v1
 * @param v2
 * @returns 1: v1 > v2, -1: v1 < v2, 0: v1 == v2
 */
export const compareVersions = (v1: string, v2: string) => {
  if (isNil(v1) || isNil(v2)) {
    return 0
  }
  const v1Arr = v1.split('.')
  const v2Arr = v2.split('.')
  const len = Math.max(v1Arr.length, v2Arr.length)
  for (let i = 0; i < len; i++) {
    const num1 = parseInt(v1Arr[i] || 0)
    const num2 = parseInt(v2Arr[i] || 0)
    if (num1 > num2) {
      return 1
    } else if (num1 < num2) {
      return -1
    }
  }
  return 0
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值