以下为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
。