版本号比较函数-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>
还是要从基础学起,数据结构,操作系统,计算机网络,计算机组成原理。