JSFiddle - React, Tailwind, and code Playground

by emragins

JavaScript

function cmpVersions (a, b) {
    var i, diff;
    var regExStrip0 = /(\.0+)+$/;
    var segmentsA = a.replace(regExStrip0, '').split('.');
    var segmentsB = b.replace(regExStrip0, '').split('.');
    var l = Math.min(segmentsA.length, segmentsB.length);

    for (i = 0; i < l; i++) {
        diff = parseInt(segmentsA[i], 10) - parseInt(segmentsB[i], 10);
        if (diff) {
            return diff;
        }
    }
    
    var lengthDiff = segmentsA.length - segmentsB.length;
    if(lengthDiff != 0)
    	return lengthDiff
    return a.length - b.length;
}

// TEST
console.log(
[
 '2.5.10.4159',
 '1.0.0',
 '0.0.0',
 '0.5',
 '0.4.1',
 '1',
 '0.0',
 '1.1',
 '2.5.0',
 '2',
 '2.5.10',
 '10.5',
 '1.25.4',
 '1.2.15'
 ].sort(cmpVersions));