你的位置:首页 > Java教程

[Java教程]javascript通用判断版本号是否在版本范围之间代码


通用判断版本号是否在两者之间,也可以搭配判断是否大于某版本号,小于取反即可

 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 三个数值的对比,这样,无论隔开的版本号有多大,总体分为几段,都可以正确比对.