如何找到下划线分隔的应用程序版本之间的最大值

How to find largest value between underscore delimited app versions

本文关键字:应用程序 版本 之间 最大值 分隔 何找 下划线      更新时间:2023-09-26

我想跟踪应用程序的版本号,并告诉哪些版本比以前晚。

如果我有一个像1.14.1这样的值(但我们使用下划线,所以1_14_1),确定1_14_2(又名1.14.2)是后来的构建,而1_2_20不是最好的方法是什么?

function natCompare(a, b) {
    var a = a.replace(/'d+/g, x => String.fromCharCode(x) )
    var b = b.replace(/'d+/g, x => String.fromCharCode(x) )
    return a < b ? -1 : a > b ? 1 : 0
}
x = ['1_14_10', '1_2', '1_14_9', '1_2_5', '3_1', '1_14']
console.log(x.sort(natCompare))
  
  

假设两个版本的分隔符数目相同:

function compare(v1, v2) {
  const a = v1.split('_').map(s => parseInt(s))
  const b = v2.split('_').map(s => parseInt(s))
  for(let i = 0; i < a.length; i++) {
    if (a[i] !== b[i]) {
      return Math.sign(a[i] - b[i])
    }
  }
  return 0
}
compare('1_14_1', '1_14_1') // 0
compare('1_14_1', '1_14_2') // -1
compare('1_14_1', '1_2_20') // 1