我可以在JavaScript中正确比较版本号,而无需拆分和检查每个十进制数.它是如何工作的?
("2.0.1" > "2.1.0")
false
("2.2.1" > "2.1.0")
true
("2.5.1" > "2.0.5")
true
Run Code Online (Sandbox Code Playgroud)
谢谢.
不,你不能"无需拆分就能在JavaScript中正确比较版本号"
"2.2.8" > "2.2.10" // true
Run Code Online (Sandbox Code Playgroud)
这些字符串在字符之后从左到右进行比较.
您需要在数字后拆分和比较数字,这很容易.以下是您可以如何实现它:
function Version(s){
this.arr = s.split('.').map(Number);
}
Version.prototype.compareTo = function(v){
for (var i=0; ;i++) {
if (i>=v.arr.length) return i>=this.arr.length ? 0 : 1;
if (i>=this.arr.length) return -1;
var diff = this.arr[i]-v.arr[i]
if (diff) return diff>0 ? 1 : -1;
}
}
console.log((new Version("1.1.1")).compareTo(new Version("1.2.1"))); // -1
console.log((new Version("1.1.1")).compareTo(new Version("1.10.1"))); // -1
console.log((new Version("1.10.1.2")).compareTo(new Version("1.10.1"))); // 1
console.log((new Version("1.10.1.2")).compareTo(new Version("1.10.1.2"))); // 0
Run Code Online (Sandbox Code Playgroud)