• JS比较软件版本号


    JS比较软件版本号 版本号格式为:a.b.c

    1.获取版本号中的数字

    function toNumber(n) {
    	// 使用正则表达式,截取字符串为数组,字符串中包含非数值型,如字母,则数组元素中会出现空值
    	var n = n.toString(),
    		n_arr = n.split(/D/);
    	if (n_arr[n_arr.length - 1] == '') {
    		n_arr.pop();
    	}
    
    	var n_replace = ['', '0', '00', '000', '0000'],
    		r_n_replace = n_replace.reverse();
    
    	for (var i = 0; i < n_arr.length; i++) {
    		var l = n_arr[i].length;
    		n_arr[i] = r_n_replace[l] + n_arr[i];
    	}
    
    	var res = n_arr.join('');
    	return res;
    }
    

    2.获取版本号中的字母

    function toString(s) {
    	var s = s.toString(),
    		// 截取字符串中的字母成为数组元素 
    		reg = s.match(/[a-zA-Z]/g);
    
    	return reg != null ? reg : null;
    	/* 被替换 */
    	// 	if (reg != null) {
    	// 		return reg;
    	// 	} else {
    	// 		return null;
    	// 	}
    }
    

    3.版本号比对

    function changeVersion(a, b) {
    	var a1 = toNumber(a),
    		a2 = toString(a),
    		b1 = toNumber(b),
    		b2 = toString(b);
    
    	if (a1 < b1) {
    		console.log('最新版本号为:' + b);
    	} else if (a1 > b1) {
    		console.log('最新版本号为:' + a);
    	} else if (a1 === b1) {
    		// 版本号相同时,对比字母,将其转为16进制数,进行比对
    		var a2_str = a2[0].toString(16),
    			b2_str = b2[0].toString(16);
    		if (a2_str < b2_str) {
    			console.log('最新版本号为:' + b);
    		} else if (a2_str > b2_str) {
    			console.log('最新版本号为:' + a);
    		} else if (a2_str === b2_str) {
    			console.log('两版本号相同!最新版本号为:' + a);
    		}
    	}
    }
    

    比对结果

    let a = '1.2.3a',
    	b = '1.2.2c';
    changeVersion(a, b); // 最新版本号为:1.2.3a
    
    let v_n = '1.2.4',
    	v_o = '1.1.1c';
    changeVersion(v_n, v_o); // 最新版本号为:1.2.4
    

    纯数字1.2.3三级版本号比较

    /* 软件版本比较 */
    function versionAnswer(vNew, vOld) {
    	if (vNew == '' || vNew == null || vNew == undefined) {
    		return false;
    	} else {
    		var vn = vNew.replace(/(^s+)|(s+$)/gi, '');
    	}
    	var vo = vOld.replace(/(^s+)|(s+$)/gi, '');
    
    	if (!vn || !vo) return true;
    
    	var reg = /d(.|d)*d/gi;
    	vn = vn.match(reg)[0];
    	vo = vo.match(reg)[0];
    
    	var vnArr = vn.split('.');
    	var voArr = vo.split('.');
    	// 版本比较 1.1.1类型
    	if (vnArr[0] > voArr[0]) {
    		return true;
    	} else if (vnArr[0] == voArr[0]) {
    		if (vnArr[1] > voArr[1]) {
    			return true;
    		} else if (vnArr[1] == voArr[1]) {
    			if (vnArr[2] > voArr[2]) {
    				return true;
    			} else if (vnArr[2] == voArr[2]) {
    				return false;
    			}
    		}
    	}
    	return false;
    }
    

    :传递要比较的两个版本号为vNew vOld,新版本号在前,老版本号在后,返回结果为True or False

  • 相关阅读:
    软件测试人员的年终绩效考核怎么应对
    收藏
    顶踩组件 前后两版
    订阅组件
    hdu 1963 Investment 完全背包
    hdu 4939 Stupid Tower Defense 动态规划
    hdu 4405 Aeroplane chess 动态规划
    cf 414B Mashmokh and ACM 动态规划
    BUPT 202 Chocolate Machine 动态规划
    hdu 3853 LOOPS 动态规划
  • 原文地址:https://www.cnblogs.com/zxk5211/p/web_17.html
Copyright © 2020-2023  润新知