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

     <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. jmeter建立JDBC连接池时遇到“A Test is currently running,stop or shutdown test to execute this command”

    1.显示如下图,打开日志可以看到:Variable Name must not be empty for element:JDBC Connection Configuration,即JDBC Con ...

  2. 好久没玩laravel了,5.6玩下(三)

    好了,基础的测试通了,咱们开始增删改了 思路整理 先创建项目功能控制器 然后设置路由访问规则 然后开发项目的增删改功能 1 先创建项目的控制器 php artisan make:controller ...

  3. 练手nginx反向代理和负载均衡apache实战

    先说下原理性的 什么是反向代理 用户访问域名  域名的指向到nginx  nginx把请求转发到apache  apache处理后 返回给用户 整套的逻辑 对于用户来说  就是访问域名 然后返回  没 ...

  4. vue pm2守护进程

    Linux 创建一个.sh可执行脚本,例如hexo.sh 代码 12 #!/usr/bin/env bashhexo server 使用pm2 start hexo.sh执行脚本 Windows 创建 ...

  5. vue-webpack 引入echarts 注意事项

    0.执行教程 https://www.cnblogs.com/goloving/p/8654176.html1.在index 中创建 div <!DOCTYPE html> <htm ...

  6. insert NULL into mysql

    https://stackoverflow.com/questions/36898130/python-how-to-insert-null-mysql-values You are insertin ...

  7. linux——DNS服务器配置

    讲课,请不要在课堂上查找文件,浏览器搜索,会感觉你很不上心,玩听众,一定提前做很多遍,模拟很多遍: 演讲,请务必准备好材料,考虑听众的感受,一定不要让外行人云里雾里,听不懂你在讲什么,那就尴尬了, D ...

  8. Java Thread.interrupt interrupted

    Java Thread.interrupt @(Base)[JDK, 线程, interrupt] 原文地址,转载请注明 下面这个场景你可能很熟悉,我们调用Thread.sleep(),conditi ...

  9. C++ 0x std::async 的应用

    #include <iostream> #include <thread> #include <mutex> #include <vector> #in ...

  10. Error: Cannot find a valid baseurl for repo: epel

    修改一下/etc/yum.repos.d/epel.repo文件, enable=1改为enable=0