标签:
通用判断版本号是否在两者之间,也可以搭配判断是否大于某版本号,小于取反即可
1 var APP = {}; 2 3 //判断指定版本是否在版本范围之间 1.0.2 3.1.6 4 APP.betweenVersion = function(curr,start,end,separator){ 5 if(curr == start || curr == end){ 6 return true; 7 } 8 9 var separator = separator || ‘.‘; 10 var curr = curr.split(separator); 11 var start = start.split(separator); 12 var end = end.split(separator); 13 var gtStart = false; 14 var ltEnd = false; 15 16 gtStart = APP.gtTargetVersion( APP.compareVersionEle(curr,start) ); 17 18 if(!gtStart){ 19 return false; 20 } 21 22 return !APP.gtTargetVersion( APP.compareVersionEle(curr,end) ); 23 24 }; 25 APP.compareVersionEle = function(curr,target){ 26 var len = curr.length; 27 var temp = []; 28 var left,right; 29 30 for(var i=0;i<len;i++){ 31 32 left = +curr[i]; 33 right = +target[i]; 34 35 if(left == right){ 36 temp.push(0); 37 }else if(left > right){ 38 temp.push(1); 39 }else{ 40 temp.push(-1); 41 } 42 } 43 return temp; 44 }; 45 46 APP.gtTargetVersion = function(arr){ 47 var res = true; 48 var curr,next; 49 50 for(var i=0,len=arr.length;i<len;i++){ 51 curr = arr[i]; 52 next = arr[i+1]; 53 54 if( curr>next ){ 55 if(curr == 0){ 56 res = false; 57 break; 58 } 59 if(curr == 1){ 60 res = true; 61 break; 62 } 63 64 }else if(curr == next){ 65 if(curr == -1){ 66 res = false; 67 break; 68 } 69 if(curr == 1){ 70 res = true; 71 break; 72 } 73 }else{ 74 if(curr == -1){ 75 res = false; 76 break; 77 } 78 if(curr == 0){ 79 res = true; 80 break; 81 } 82 } 83 } 84 // console.log(res); 85 return res; 86 } 87 88 var res = APP.betweenVersion(‘1.2.100.10‘,‘1.3.10.2‘,‘3.1.1.16‘,‘.‘); 89 console.log(res);
当前项目有需要判断指定版本是否在两个版本之间这个需求,百度谷歌找了一圈,代码都是有局限性的,无法通用,甚至是一堆错误的东西转来转去......
当前方法有两个要点,一个是需要将切开的版本号转为数值型数组,还有一个是对比大小的时候转为 -1 0 1 三个数值的对比,这样,无论隔开的版本号有多大,总体分为几段,都可以正确比对.
标签:
原文地址:http://www.cnblogs.com/tabooc/p/5002880.html