版本号比较大小问题

586 阅读1分钟

版本号比较大小

思路

eg: 版本号: 1.3.9.1

  • 将版本号以 . 分割成一个数组A(每一项都是字符串格式)。
  • 自定义一个数组 B ['0000', '000', '00', '0', ''](默认字符串的每节数都在 5 位以下)
  • 遍历 A, 让 B 的每一项与 A 的每一项字符串相加(通过 A 的没一项的个数来判断一下)

具体实现

    function toNum(val) {
      let a = val.toString().split('.')
      let num = ['0000', '000', '00', '0', '']
      a.forEach((item, index) => {
        let len = item.length
        // 字符串相加
        a[index] = num[len] + a[index]
      })
      let res = a.join('')
      return res
    }

    function compare(a, b) {
      let _a = toNum(a)
      let _b = toNum(b)

      if (_a === _b) console.log('版本号相同');
      if (_a > _b) console.log(`版本号:${a} 是新版本`);
      if (_a < _b) console.log(`版本号:${b} 是新版本`);
    }

    let a = 'V2.4.6.9'
    let b = 'V2.4.6.5'
    compare(a, b)    // 版本号:V2.4.6.9 是新版本

注意

如果版本号是这样包括 v 字母的 v1.2.3.4

toNum 方法中的 let a = val.toString().split('.') => let a = val.toString().split(/\D/)

/D 查找非数字字符。