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 }