面试前,让做的一个版本号比较函数。
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>
还是要从基础学起,数据结构,操作系统,计算机网络,计算机组成原理。
来源:https://www.cnblogs.com/jkj-jim/p/6486788.html