版本号比较函数-js

面试前,让做的一个版本号比较函数。

 1     <script type="text/javascript">
 2         var v1=prompt("请输入第一个版本号");
 3         var v2=prompt("请输入第二个版本号");        
 4         console.log(versionCompare(v1,v2));        
 5    function versionCompare(v1,v2) {
 6        //版本号间如果出现字母,则视为测试版本,不比较字母大小,字母只出现一次
 7            v1=v1.replace(/\s/g,"");//去除空格
 8            v2=v2.replace(/\s/g,"");
 9            if(v1[0]=="v"||v1[0]=="V"){v1=v1.replace(/v/i,"");}//去除开头的第一个v
10            if(v2[0]=="v"||v2[0]=="V"){v2=v2.replace(/v/i,"");}
11            if(v1[0]=="."){v1=v1.replace(/./i,"");}//去除开头的.
12            if(v2[0]=="."){v2=v2.replace(/./i,"");}
13            if(v1[v1.length-1]=="."){v1=v1.slice(0,v1.length-1)};//去除末尾的.
14            if(v2[v2.length-1]=="."){v2=v2.slice(0,v2.length-1)};
15            console.log(v1+"+"+v2);
16            var dv1=v1.split(".");//按.分隔开来
17            var dv2=v2.split(".");
18            var minlength=Math.min(dv1.length,dv2.length);//获取两者最短字符串长度
19            var str1,str2,count1,count2;//定义中间变量
20        console.log(dv1+"-"+dv2);//打印处理后的dv1和dv2
21            for (i=0;i<minlength;i++) {
22                count1=-1;
23                count2=-1;
24                //版本号有字母的情况
25             if((dv1[i].search(/[a-zA-Z]+/)!=-1||dv2[i].search(/[a-zA-Z]+/)!=-1)&&i>0){
26                 //对v1进行字母前内容提取
27                 if (dv1[i].search(/[a-zA-Z]+/)!=-1) {
28                 count1=dv1[i].search(/[a-zA-Z]+/);
29                 str1=dv1[i].slice(0,count1);
30                 } else{
31                 str1=dv1[i];
32                 }
33                 //对v2进行字母前内容提取
34                 if (dv2[i].search(/[a-zA-Z]+/)!=-1) {
35                 count2=dv2[i].search(/[a-zA-Z]+/);
36                 str2=dv2[i].slice(0,count1);
37                 } else{
38                 str2=dv2[i];
39                 }
40                 //判断字母前版本号大小
41                     if(parseInt(str1)<parseInt(str2)){return 2;}
42                     else if(parseInt(str1)>parseInt(str2)){return 1;}
43                     else{
44                             if (dv1[i][count1]==dv2[i][count2]) {//字母相同,判断字母后版本大小
45                                 str1=dv1[i].slice(count1+1);
46                                 str2=dv2[i].slice(count2+1);
47                                 return (parseInt(str1)<parseInt(str2)?2:1);}
48                             else{return 0;}//字母不同,属于不同的测试版本
49                         }
50                     }
51                     //版本号无字母的情况
52                        else if(parseInt(dv1[i])<parseInt(dv2[i])){
53                            return 2;}
54                        else if (parseInt(dv1[i])>parseInt(dv2[i])){
55                            return 1;}
56                        }
57            //在最短字符串长度无比较结果时,谁的长谁的版本号新
58            if (dv1.length==dv2.length) {
59                return 0;
60            }else{
61                return (dv1.length<dv2.length?2:1);
62            }
63    }
64 
65     </script>

还是要从基础学起,数据结构,操作系统,计算机网络,计算机组成原理。

posted @ 2017-03-01 22:50  吉木L  阅读(257)  评论(0编辑  收藏  举报
返回顶部↟