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;
	};
posted @ 2015-07-14 12:02  小云菜  阅读(1010)  评论(0编辑  收藏  举报