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

     <script type="text/javascript">
var v1=prompt("请输入第一个版本号");
var v2=prompt("请输入第二个版本号");
console.log(versionCompare(v1,v2));
function versionCompare(v1,v2) {
//版本号间如果出现字母,则视为测试版本,不比较字母大小,字母只出现一次
v1=v1.replace(/\s/g,"");//去除空格
v2=v2.replace(/\s/g,"");
if(v1[0]=="v"||v1[0]=="V"){v1=v1.replace(/v/i,"");}//去除开头的第一个v
if(v2[0]=="v"||v2[0]=="V"){v2=v2.replace(/v/i,"");}
if(v1[0]=="."){v1=v1.replace(/./i,"");}//去除开头的.
if(v2[0]=="."){v2=v2.replace(/./i,"");}
if(v1[v1.length-1]=="."){v1=v1.slice(0,v1.length-1)};//去除末尾的.
if(v2[v2.length-1]=="."){v2=v2.slice(0,v2.length-1)};
console.log(v1+"+"+v2);
var dv1=v1.split(".");//按.分隔开来
var dv2=v2.split(".");
var minlength=Math.min(dv1.length,dv2.length);//获取两者最短字符串长度
var str1,str2,count1,count2;//定义中间变量
console.log(dv1+"-"+dv2);//打印处理后的dv1和dv2
for (i=0;i<minlength;i++) {
count1=-1;
count2=-1;
//版本号有字母的情况
if((dv1[i].search(/[a-zA-Z]+/)!=-1||dv2[i].search(/[a-zA-Z]+/)!=-1)&&i>0){
//对v1进行字母前内容提取
if (dv1[i].search(/[a-zA-Z]+/)!=-1) {
count1=dv1[i].search(/[a-zA-Z]+/);
str1=dv1[i].slice(0,count1);
} else{
str1=dv1[i];
}
//对v2进行字母前内容提取
if (dv2[i].search(/[a-zA-Z]+/)!=-1) {
count2=dv2[i].search(/[a-zA-Z]+/);
str2=dv2[i].slice(0,count1);
} else{
str2=dv2[i];
}
//判断字母前版本号大小
if(parseInt(str1)<parseInt(str2)){return 2;}
else if(parseInt(str1)>parseInt(str2)){return 1;}
else{
if (dv1[i][count1]==dv2[i][count2]) {//字母相同,判断字母后版本大小
str1=dv1[i].slice(count1+1);
str2=dv2[i].slice(count2+1);
return (parseInt(str1)<parseInt(str2)?2:1);}
else{return 0;}//字母不同,属于不同的测试版本
}
}
//版本号无字母的情况
else if(parseInt(dv1[i])<parseInt(dv2[i])){
return 2;}
else if (parseInt(dv1[i])>parseInt(dv2[i])){
return 1;}
}
//在最短字符串长度无比较结果时,谁的长谁的版本号新
if (dv1.length==dv2.length) {
return 0;
}else{
return (dv1.length<dv2.length?2:1);
}
} </script>

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

版本号比较函数-js的更多相关文章

  1. vue cli3.0 build 打包 的 js 文件添加版本号 解决 js 缓存问题

    在 vue.config.js 的文件中加入下面这段话 // vue.config.jsconst Timestamp = new Date().getTime();module.exports = ...

  2. Python版本号比较函数 LooseVersion 和StrictVersion

  3. 关于更新发布CSS和JS文件的缓存问题

    现如今,浏览器大战下,各个浏览器也是拼了命的提高性能,升级JS解析引擎,更好的处理浏览器的页面缓存,让用户的浏览体验更快,占用更小的PC资源.那么,问题就出现在JS和CSS缓存,甚至页面缓存上.至于浏 ...

  4. js文件被浏览器缓存的思考

        我们的用户量大,修改js文件后,用户反馈登录出现问题.实际上刷新一下就没事了.就是因为用户的浏览器使用的还是本地缓存的js代码.   强制刷新一般就会重新去服务器获取新的js代码.但不能让用户 ...

  5. Node.js学习笔记2(安装和配置Node.js)

            1.安装         windows下安装,在http://nodejs.org下载安装包进行安装即可.         linux下安装,使用yum或者下载源码进行编译.     ...

  6. JS多语种方式

    方案: 在不同的移动平台(IOS.Android)上,并建立了HTML页面通信框架.主要业务逻辑HTML发展:我要支持多语言开发. 动机: 通过积极主动的信息方式,前一页完成初始化,获取当前语言选项. ...

  7. js判断是否是ie浏览器且给出ie版本

    之前懒得写判断ie版本js,因为网上关于这方面的代码太多了,所以从网上拷贝了一个,放到项目上才发现由于时效性的问题,代码不生效.就自己写一个吧. 怎么去看浏览器的内核等信息 ---- js的全局对象w ...

  8. Node.js入门(含NVM、NPM、NVM的安装)

    本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. Node.js的介绍 引擎 引擎的特性: JS的内核即引擎.因为引擎有以 ...

  9. 利用gulp,当引入文件改动时,版本号自动更新~

    gulp自动更新版本号 安装依赖 yarn add gulp-rev yarn add gulp-rev-collector 本次依赖的版本号为: "gulp": "^3 ...

随机推荐

  1. Nature | 光学CNN层替换传统CNN层,超省电

    CNN 计算效率的研究一直备受关注,但由于功率和带宽的严格限制,CNN 仍难以应用在嵌入式系统如移动视觉.自动驾驶中.在斯坦福大学发表在 Nature 旗下 Scientific Reports 的这 ...

  2. DRL前沿之:Benchmarking Deep Reinforcement Learning for Continuous Control

    1 前言 Deep Reinforcement Learning可以说是当前深度学习领域最前沿的研究方向,研究的目标即让机器人具备决策及运动控制能力.话说人类创造的机器灵活性还远远低于某些低等生物,比 ...

  3. 一起KVM环境下windows7虚拟机异常死机(BSOD)的问题解决

    先说一下环境: 一.硬件 8台服务器做的超融合架构,软件存储池, 每台服务器是96G内存,两颗Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz,32线程. 每台服务器是 ...

  4. 3.4 SpringBoot发送邮件

      spring官方提供了spring-boot-starter-mail来整合邮件发送功能,本质上还是利用了JavaMailSender类. 首先我们要在项目中引入相关依赖 <parent & ...

  5. Oracle中查询表的大小、表的占用情况和表空间的大小

    有两种含义的表大小.一种是分配给一个表的物理空间数量,而不管空间是否被使用.可以这样查询获得字节数: select segment_name, bytes from user_segments whe ...

  6. 单例模式(Singleton)

    单例模式  Singletonn Pattern Ensure a class has only one instance, and provide  a global point of access ...

  7. 《GPU高性能编程CUDA实战》附录三 关于book.h

    ▶ 本书中用到的公用函数放到了头文件book.h中 #ifndef __BOOK_H__ #define __BOOK_H__ #include <stdio.h> #include &l ...

  8. PHP图像 因其本身有错无法显示

    昨天终于将客户的一个网站迁移至虚拟主机上,满怀希望的敲入网址.唰的一声,网站很轻松的被打开了. 心里那个高兴啊~~~ 咦,怎么产品图片都没有显示出来.一块块都是空白.敲入img src对应的地址,看看 ...

  9. C++实现ping功能<转>

    今天接到需求要实现ping的功能,然后网上查了一些资料,对网络编程的一些函数熟悉了一下,虽然还有一些细节不清楚,但是慢慢积累. 要实现这样的功能: 基础知识 ping的过程是向目的IP发送一个type ...

  10. Haskell语言学习笔记(37)RWS, RWST

    RWST Monad转换器 RWST Monad转换器是将 ReaderT, WriterT 以及 StateT 这三个Monad转换器的功能集于一体的产物. newtype RWST r w s m ...