SOURCE

function compareVersion(v1, v2) {
  v1 = v1.split('.');
  v2 = v2.split('.');
  var len = Math.max(v1.length, v2.length);
  while (v1.length < len) {
    v1.push('0')
  }
  while (v2.length < len) {
    v2.push('0')
  }
  for (var i = 0; i < len; i++) {
    var num1 = parseInt(v1[i]);
    var num2 = parseInt(v2[i]);
    if (num1 > num2) {
      return 1
    } else if (num1 < num2) {
      return - 1
    }
  }
  return 0
}

let arr = ['2.10.1','2.3.1','1.2.10', '1.1', '1.1.1', '1.10.15.1', '2.1', '2.2.1', ];

var i = arr.length,
j;
var tempExchangVal;
while (i > 0) {
  for (j = 0; j < i - 1; j++) {
    if (compareVersion(arr[j], arr[j + 1]) >= 1) {
      tempExchangVal = arr[j];
      arr[j] = arr[j + 1];
      arr[j + 1] = tempExchangVal;
    }
  }
  i--;
}
console.log(arr);
console 命令行工具 X clear

                    
>
console