zoukankan      html  css  js  c++  java
  • H5+ 重写在线升级版本比较代码

    重写h5+在线升级版本比较代码

    hello h5+版本在线升级提供了如下的版本比较方法,逻辑比较繁琐,相关判断多余,非常不宜读。
    先判断新旧版本有无,
    接着分割为数组比较数组项大小,而且还只取了前四项
    并且在内部再去比较数组长度,
    最后重新在比较一次数组长度
    四层逻辑还有一层嵌套,完全没必要
    

    http://www.cnblogs.com/phillyx/

        /**
    	 * 比较版本大小,如果新版本nv大于旧版本ov则返回true,否则返回false
    	 * @param {String} ov
    	 * @param {String} nv
    	 * @return {Boolean}
    	 */
    	var compareVersion = function(ov, nv) {
    		if (!ov || !nv || ov == "" || nv == "") {
    			return false;
    		}
    		var b = false,
    			ova = ov.split(".", 4),
    			nva = nv.split(".", 4);
    		for (var i = 0; i < ova.length && i < nva.length; i++) {
    			var so = ova[i],
    				no = parseInt(so),
    				sn = nva[i],
    				nn = parseInt(sn);
    			if (nn > no || sn.length > so.length) {
    				return true;
    			} else if (nn < no) {
    				return false;
    			}
    		}
    		if (nva.length > ova.length && 0 == nv.indexOf(ov)) {
    			return true;
    		}
    	};
    
    下面是重写的方法
    首先将版本转化为字符串
    然后分割为数组,并去最大的数组长度
    比较数组,数组中无此项的置0
    这样就可以了,代码量明显减少,逻辑也比较清晰
    
         /**
    	 * 比较版本大小,如果新版本nv大于旧版本ov则返回true,否则返回false
    	 * @param {String} ov
    	 * @param {String} nv
    	 * @return {Boolean}
    	 */
    	var compareVersion =  function(ov, nv) {
    		ov=ov+'';
    		nv=nv+'';		
    		var ova = ov.split("."),
    			nva = nv.split(".");
    		var maxLength = Math.max(ova.length, nva.length);
    
    		for (var i = 0; i < maxLength; i++) {
    			var so = +ova[i] || 0,
    				sn = +nva[i] || 0;
    				if (sn > so) {
    					return true;
    				}
                                    if(sn < so){
    					return false
    				}
    		}
    		return false;
    	};
    
  • 相关阅读:
    《node.js开发指南》读书笔记(一)
    boostrap按钮
    boostrap预定义样式风格
    bootstrap字体图标
    bootstrap初探2
    bootstrap初探
    CSS3 animation
    css3 3D变换和动画
    css3 2D变换 transform
    pandas处理Excel、cvs
  • 原文地址:https://www.cnblogs.com/phillyx/p/4645076.html
Copyright © 2011-2022 走看看