Sort version-dotted number strings in Javascript?

前端 未结 14 1727
栀梦
栀梦 2020-12-05 15:01

I have an array of following strings:

[\'5.5.1\', \'4.21.0\', \'4.22.0\', \'6.1.0\', \'5.1.0\', \'4.5.0\'] 

...etc.

I need a soluti

14条回答
  •  时光取名叫无心
    2020-12-05 15:23

    You can check in loop if values are different, return difference, else continue

    var a=['5.5.1', '4.21.0', '4.22.0', '6.1.0', '5.1.0', '4.5.0'];
    
    a.sort(function(a,b){
      var a1 = a.split('.');
      var b1 = b.split('.');
      var len = Math.max(a1.length, b1.length);
      
      for(var i = 0; i< len; i++){
        var _a = +a1[i] || 0;
        var _b = +b1[i] || 0;
        if(_a === _b) continue;
        else return _a > _b ? 1 : -1
      }
      return 0;
    })
    
    console.log(a)

提交回复
热议问题