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