以下为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]
,因此需要依次比较 12
、1
、0
和 12
、0
、9
,当比较到第二个数字 1
和 0
时,发现 1
大于 0
,因此输出 1
。
对于 compare('12.1.0', '12.1.2')
,同样需要依次比较 12
、1
、0
和 12
、1
、2
,在第三个数字 0
和 2
处发现不相等,因此可用于比较大小,输出 -1
。
对于 compare('5.0.1', '5.0.1')
,两个版本号相等,输出 0
。