以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - JavaScript 代码题
157. semver 比较

下面是一种实现方式:

function compare(ver1, ver2) {
  var v1 = ver1.split('.');
  var v2 = ver2.split('.');
  var len = Math.max(v1.length, v2.length);

  for (var i = 0; i < len; i++) {
    var num1 = parseInt(v1[i] || 0, 10);
    var num2 = parseInt(v2[i] || 0, 10);
    if (num1 < num2) {
      return -1;
    } else if (num1 > num2) {
      return 1;
    }
  }
  return 0;
}

这个实现的思路是将版本字符串拆分成数字数组,然后从左到右依次比较对应位置的数字,如果出现不相等的数字,则可用于比较大小,如果全部数字相等,则两个版本号相等。

举例说明:

对于 compare('12.1.0', '12.0.9')v1 将为 [12, 1, 0]v2 将为 [12, 0, 9],因此需要依次比较 12101209,当比较到第二个数字 10 时,发现 1 大于 0,因此输出 1

对于 compare('12.1.0', '12.1.2'),同样需要依次比较 12101212,在第三个数字 02 处发现不相等,因此可用于比较大小,输出 -1

对于 compare('5.0.1', '5.0.1'),两个版本号相等,输出 0