Sort version-dotted number strings in Javascript?

前端 未结 14 1736
栀梦
栀梦 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:22

    If ES6 I do this:

    versions.sort((v1, v2) => {
      let [, major1, minor1, revision1 = 0] = v1.match(/([0-9]+)\.([0-9]+)(?:\.([0-9]+))?/);
      let [, major2, minor2, revision2 = 0] = v2.match(/([0-9]+)\.([0-9]+)(?:\.([0-9]+))?/);
      if (major1 != major2) return parseInt(major1) - parseInt(major2);
      if (minor1 != minor2) return parseInt(minor1) - parseInt(major2);
      return parseInt(revision1) - parseInt(revision2);
    });
    

提交回复
热议问题