两个小数点比较 如1.0.2

版本比较函数

// versionCompare函数
// 输入:preVersion(前一个版本),lastVersion(后一个版本)
// 输出:-1(如果preVersion小于lastVersion)
//       0(如果两个版本相等)
//       1(如果preVersion大于lastVersion)

function versionCompare(preVersion = '', lastVersion = '') {
    // 使用'.'切割版本号字符串,得到版本数组
    let sources = preVersion.split('.');
    let dests = lastVersion.split('.');
    // 获取两个版本号中较长的一个
    let maxL = Math.max(sources.length, dests.length);
    let result = 0;

    // 遍历每一位版本号进行比较
    for (let i = 0; i < maxL; i++) {
        // 如果某一版本长度短,那么缺失的部分默认为0
        let preValue = sources.length > i ? sources[i]:0;
        let lastValue = dests.length > i ? dests[i]:0;
        
        // 如果版本号包含非数字字符,则转为字符编码
        let preNum = isNaN(Number(preValue)) ? preValue.charCodeAt() : Number(preValue);
        let lastNum =  isNaN(Number(lastValue)) ? lastValue.charCodeAt() : Number(lastValue);
        
        // 进行实际的版本号比较
        if (preNum < lastNum) {
            result = -1;
            break;
        } else if (preNum > lastNum) {
            result = 1;
            break;
        }
    }
    
    // 返回结果
    return result;
}

测试versionCompare函数

// 使用示例版本号 '1.0.2' 和 '1.0.3' 测试函数
console.log((versionCompare('1.0.2', '1.0.3')))

posted on 2021-07-25 15:29  完美前端  阅读(75)  评论(0)    收藏  举报

导航