js实现一个客户端版本号的统计,目前该功能可以实现版本号中数字版本的统计,例如2.2.3 <2.2.3.1, 1.2.3<2.0.0,原理就是从高版本号到次版本号依次比较
1 if (!Array.prototype.trim){
2 Array.prototype.trim=function(){
3 var arr=[];
4 this.forEach(function(e){
5 if(e.match(/\S+/)) arr.push(e);
6 })
7 return arr;
8 }
9 }
10
11 function version_compare(a,b) {
12 var a_str=a.name.toString();
13 var a_version=a_str.split(/\D+/).trim();
14 var b_str=b.name.toString();
15 var b_version=b_str.split(/\D+/).trim();
16
17 var aLength = a_version.length;
18 var bLength = b_version.length;
19 var minL = Math.min(aLength,bLength);
20 var r = null
21 for (var i = 0; i < minL; i++) {
22 //此处要转成Number类型,不然比较会出现15<6的情况,可能由于正则匹配造成的,还没有详细探究原因
23 var aNum = new Number(a_version[i]);
24 var bNum = new Number(b_version[i]);
25 if (aNum < bNum) {
26 r = 1
27 break;
28
29 } else if (aNum >bNum) {
30 r = -1;
31 break;
32 } else if (i == minL-1 && aNum == bNum) {
33
34 if(aLength>minL){
35 r = 1;
36 break;
37 }else if(bLength>minL) {
38 r = -1;
39 break;
40 }
41 }
42
43 }
44 return r;
45 }