版本号比较函数-js
面试前,让做的一个版本号比较函数。
<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的更多相关文章
- vue cli3.0 build 打包 的 js 文件添加版本号 解决 js 缓存问题
在 vue.config.js 的文件中加入下面这段话 // vue.config.jsconst Timestamp = new Date().getTime();module.exports = ...
- Python版本号比较函数 LooseVersion 和StrictVersion
- 关于更新发布CSS和JS文件的缓存问题
现如今,浏览器大战下,各个浏览器也是拼了命的提高性能,升级JS解析引擎,更好的处理浏览器的页面缓存,让用户的浏览体验更快,占用更小的PC资源.那么,问题就出现在JS和CSS缓存,甚至页面缓存上.至于浏 ...
- js文件被浏览器缓存的思考
我们的用户量大,修改js文件后,用户反馈登录出现问题.实际上刷新一下就没事了.就是因为用户的浏览器使用的还是本地缓存的js代码. 强制刷新一般就会重新去服务器获取新的js代码.但不能让用户 ...
- Node.js学习笔记2(安装和配置Node.js)
1.安装 windows下安装,在http://nodejs.org下载安装包进行安装即可. linux下安装,使用yum或者下载源码进行编译. ...
- JS多语种方式
方案: 在不同的移动平台(IOS.Android)上,并建立了HTML页面通信框架.主要业务逻辑HTML发展:我要支持多语言开发. 动机: 通过积极主动的信息方式,前一页完成初始化,获取当前语言选项. ...
- js判断是否是ie浏览器且给出ie版本
之前懒得写判断ie版本js,因为网上关于这方面的代码太多了,所以从网上拷贝了一个,放到项目上才发现由于时效性的问题,代码不生效.就自己写一个吧. 怎么去看浏览器的内核等信息 ---- js的全局对象w ...
- Node.js入门(含NVM、NPM、NVM的安装)
本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. Node.js的介绍 引擎 引擎的特性: JS的内核即引擎.因为引擎有以 ...
- 利用gulp,当引入文件改动时,版本号自动更新~
gulp自动更新版本号 安装依赖 yarn add gulp-rev yarn add gulp-rev-collector 本次依赖的版本号为: "gulp": "^3 ...
随机推荐
- php 学习笔记 设计和管理
代码管理 文件路径.数据库名.密码禁止 hard coded 避免重复代码在多个页面复制粘贴 Gang of Four eXtreme Programming 的主要原则是坚决主张测试是项目成功的关键 ...
- css3选择符
常用的选择符 1.元素选择符 2.id选择符 3.class选择符 4.通配符 5.群组选择符 6.包含选择符 7.伪类选择符(伪类选择符CSS中已经定义好的选择器,不能随便取名) 8.伪对象选择符( ...
- 国内访问Google的方法(Google学术、Google香港、Twitter等)
通过修改host文件达到访问Google等国外网址的目的 打开下面网址,里面会定期更新host文件,而且有详细的方法 https://laod.cn/hosts/2017-google-hosts.h ...
- char数据类型,编程能用的最小数据类型.
关于数据类型, char占1bit,8bites. signed代表有符号,包括正负数,和0; unsigned代表无符号,只包括0和整数; signed和unsigned的主要区别就是它们的最高位是 ...
- UCenter 的目录结构
以下关于文件的阐述以及代码的样例,均以 PHP 程序为例. UCenter 的目录结构 UCenter 分为服务端和客户端 2 个部分.服务端目录为“upload/”,客户端目录为“client/ ...
- 24.OGNL与ValueStack(VS)-集合对象初步
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 首先在LoginAction中增加如下字段并提供相应的get/set方法: ...
- 如何给echarts图表添加下载图表成图片的功能
先打开一个现成的图表效果图,注意图中圈出的地方,如图 打开源码找到option,如图 在option下添加toolbox,如图 在toolbox下添加feature,如图 在featu ...
- 前端-CSS-8-浮动与清楚浮动(重点)
<!-- 浮动是css里面布局最多的一个属性 效果: 两个元素并排了,并且两个元素都能够设置宽度和高度 浮动想学好:一定要知道它的四个特性: 1.浮动的元素脱标 2.浮动的元素互相贴靠 3.浮动 ...
- margin和padding的四种写法
我们经常会看到CSS样式属性中外边距margin和内边距padding的各种用法,这里做一个小结,但只简单介绍margin,因为它们的用法大同小异. 方法一. margin:10px; //4个外边距 ...
- [转]被玩坏的innerHTML、innerText、textContent和value属性
一.前言 由于innerText并非W3C标准属性,因此我们无法在FireFox中使用它,一般情况下我们可以使用textContent来代替,但它两者是否就能完全等同呢?在坑爹的表单元素(如input ...