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

Javascript 如何在下划线分隔的应用程序版本之间找到最大值,javascript,Javascript,我想跟踪应用程序的版本号,并告诉哪些版本比以前的版本晚 如果我有一个类似于1.14.1(但我们使用下划线,所以1_14_1)的值,那么确定1_14_2(aka 1.14.2)是后期版本,而1_2_20不是的最佳方法是什么? 功能比较(a、b){ var a=a.replace(/\d+/g,x=>String.fromCharCode(x)) var b=b.replace(/\d+/g,x=>String.fromCharCode(x)) 返回ab?1:0 } x=['1_14_10','1_

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

如果我有一个类似于
1.14.1
(但我们使用下划线,所以
1_14_1
)的值,那么确定
1_14_2
(aka 1.14.2)是后期版本,而
1_2_20
不是的最佳方法是什么?

功能比较(a、b){
var a=a.replace(/\d+/g,x=>String.fromCharCode(x))
var b=b.replace(/\d+/g,x=>String.fromCharCode(x))
返回ab?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
功能比较(v1、v2){
常量a=v1.split(“”“).map(s=>parseInt)
常量b=v2.split(“”“).map(s=>parseInt)
for(设i=0;i
类似的讨论: