hef*_*ump 6 javascript regex string
我有一个3位数的字符串作为字符串,
var version = "1.2.3";
Run Code Online (Sandbox Code Playgroud)
并希望将它与另一个版本进行比较.要查看版本是否比其他版本更新,
var otherVersion = "1.2.4";
Run Code Online (Sandbox Code Playgroud)
你会怎么做?
大多数提交版本的问题是它们无法处理任何数量的版本部分(例如1.4.2 .. 1.2等)和/或它们要求版本部分是单个数字,这不是实际上很常见
改进了compareVersions()函数
如果v1大于v2,则此函数将返回1;如果v2大于此函数,则返回-1;如果版本相同,则此函数将返回0(对于自定义排序也很方便)
我没有对输入进行任何错误检查.
function compareVersions (v1, v2)
{
v1 = v1.split('.');
v2 = v2.split('.');
var longestLength = (v1.length > v2.length) ? v1.length : v2.length;
for (var i = 0; i < longestLength; i++) {
if (v1[i] != v2[i]) {
return (v1 > v2) ? 1 : -1
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
您可能希望使用以下实现(基于 jensgram 的解决方案):
function isNewer(a, b) {
var partsA = a.split('.');
var partsB = b.split('.');
var numParts = partsA.length > partsB.length ? partsA.length : partsB.length;
var i;
for (i = 0; i < numParts; i++) {
if ((parseInt(partsB[i], 10) || 0) !== (parseInt(partsA[i], 10) || 0)) {
return ((parseInt(partsB[i], 10) || 0) > (parseInt(partsA[i], 10) || 0));
}
}
return false;
}
console.log(isNewer('1.2.3', '1.2.4')); // true
console.log(isNewer('1.2.3', '1.2.0')); // false
console.log(isNewer('1.2.3', '1.2.3.1')); // true
console.log(isNewer('1.2.3', '1.2.2.9')); // false
console.log(isNewer('1.2.3', '1.2.10')); // true
Run Code Online (Sandbox Code Playgroud)
请注意,必须使用parseInt(),否则最后一次测试将返回false: "10" > "3"returns false。
| 归档时间: |
|
| 查看次数: |
2403 次 |
| 最近记录: |