JavaScript版本号对比
2016-12-09 20:33
369 查看
JavaScript版本号对比
之前项目中遇到要根据不同版本号来执行不同代码,想走捷径,结果一堆坑啊,各种比较错误。网上js写的相关代码好像不太搜得到,就在这里分享一下自己的代码。通常版本号如:1.3.20.8,6.82.20160101等,复杂情况一般会形如比对(1.2.0,1.1.5),(1.2.4,1.1.5),(1.0.8,1.1.5),(3.0,1.1.5),(1.1.5.4,1.1.5)等。要注意的是比对时不能简单的循环判断有一位大或者小就跳出循环,版本号比对没有捷径,必须一个一个比较;而应该从大位到小位依次循环比对,到第一个不相同点(包括大于和小于)就跳出循环,如果循环全部走完,则根据版本号长度来判断大小。这种简单的事情就不废话了,直接上代码。传入两个字符串版本号:curV和reqV,返回一个true或false。
/* * 版本号比较方法 * 传入两个字符串,当前版本号:curV;比较版本号:reqV * 调用方法举例:compare("1.1","1.2"),将返回false */ function compare(curV,reqV){ if(curV && reqV){ //将两个版本号拆成数字 var arr1 = curV.split('.'), arr2 = reqV.split('.'); var minLength=Math.min(arr1.length,arr2.length), position=0, diff=0; //依次比较版本号每一位大小,当对比得出结果后跳出循环(后文有简单介绍) while(position<minLength && ((diff=parseInt(arr1[position])-parseInt(arr2[position]))==0)){ position++; } diff=(diff!=0)?diff:(arr1.length-arr2.length); //若curV大于reqV,则返回true return diff>0; }else{ //输入为空 console.log("版本号不能为空"); return false; } }
中间的while循环等价于:
while(position<minLength){ diff=parseInt(arr1[position])-parseInt(arr2[position]); if(diff!=0){ break; } position++; }最后分享一个小技巧:懂js的人基本能看懂java的代码,所以有些经典的问题可以直接百度“java如何实现...”,而不要总是百度“js如何实现...”,相关问题在js社区搜不到的,往往在java社区能找到详细的解答。
相关文章推荐
- 写一个简单的几个页面的心得
- Json传字符串中文问题解决方案
- 关于JSP---三大指令
- 一些js题
- js设置全局变量ajax中赋值
- gulp入坑系列(2)——初试JS代码合并与压缩
- 用javascript实现队列方式
- 使用jstack分析cpu消耗过高的问题
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
- js函数的调用问题
- js测试
- golang中使用package json遇到的问题
- 图解JavaScript event对象的clientX,offsetX,screenX,pageX区别
- js从一个函数中结束另一个函数的问题
- corn表达式生成器
- es6 javascript的class类的new的新特性
- jsp九大内置对象之config 和 out
- es6 javascript的class的静态方法、属性和实例属性
- JavaScript 中对变量和函数声明的“提前(hoist)”
- javascript