码迷,mamicode.com
首页 > 编程语言 > 详细

javascript通用判断版本号是否在版本范围之间代码

时间:2015-11-28 16:33:42      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:

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

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

javascript通用判断版本号是否在版本范围之间代码

标签:

原文地址:http://www.cnblogs.com/tabooc/p/5002880.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!