版本号比较函数-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 ...
随机推荐
- django 更新 模板语言
Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 在Django的模板语言中按此语法使用:{{ 变量名 ...
- mysql更新(四) 数据类型
07-数据类型 介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 详细参考链接:http://www.runoob.com/mysql/m ...
- swagger配置
1.pom.xml <!--swagger2--> <dependency> <groupId>io.springfox</groupId> <a ...
- PHP最近做了物流快递查询的接口用得是快递100
最近做了物流快递查询的接口用得是快递100的,分享下心得体会 主要使用了2种接口,一个是api的 返回json xml 各种数据的 一个是返回的URL的 就是一个带结果的网址 . 1 申请 找一 ...
- CentOS7.3下yum练手安装Nginx,支持php5.4
yum install php php-devel 安装的是5.4 那么安装完毕了,怎么设置nginx和php 解析 1 添加nginx 默认主页index.php vim .../etc/ngin ...
- 得到当前对象在不同大小的页面中的绝对位置,及冒泡cancelBubble
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- leetcode35
public class Solution { public int SearchInsert(int[] nums, int target) { ; i < nums.Length; i++) ...
- leetcode463
public class Solution { public int IslandPerimeter(int[,] grid) { );//行数 );//列数 ; ; i < row; i++) ...
- xe7 控件升级
rm.ehlib.synedit OK SynSQLSyn1->TableNames 为NULL,导致添加数据失败,XE6正常 放在按钮里也不正常,就不说初始化次序引起的.
- Simple2D-18(音乐播放器)使用 bass 音频库
BASS 简介 BASS是一个在多个平台上用于软件的音频库.其目的是为开发人员提供功能强大且高效的示例流(MP3,MP2,MP1,OGG,WAV,AIFF),MOD 音乐(XM,IT,S3M,MOD ...