版本號比較大小問題

前端小白ML發表於2019-12-27

版本號比較大小

思路

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 查詢非數字字元。

相關文章