美文网首页
nodejs实现版本号比较

nodejs实现版本号比较

作者: 笙箫竽笛 | 来源:发表于2020-07-28 10:10 被阅读0次

    一般程序版本号形式x.x.x.x的字符串,例如:1.0、1.0.0、1.0.0.0。如果直接采用字符串比较大小,会出现低版本大于高版本的结果,例如:1.10.1和1.9.2比较,就会出现"1.9.2" > "1.10.1"。所以需要对于每一位分开,采用补位的方式逐个比较。

    function compairVersion (v1, v2) {
        //补位0,或者使用其它字符
        const ZERO_STR = '000000000000000000000000000000000000000000';
        if (v1 === v2) {
            return 0;
        }
        let len1 = v1 ? v1.length : 0;
        let len2 = v2 ? v2.length : 0;
        if ( len1 === 0 && len2 === 0) {
            return 0;
        }
        if (len1 === 0) {
            return 1;
        }
        if (len2 === 0) {
            return -1;
        }
        const arr1 = v1.split('.');
        const arr2 = v2.split('.');
        const length = Math.min(arr1.length, arr2.length);
        for (let i = 0; i < length; i++) {
            let a = arr1[i];
            let b = arr2[i];
            if (a.length < b.length) {
                a = ZERO_STR.substr(0, b.length - a.length) + a;
            } else if (a.length > b.length) {
                b = ZERO_STR.substr(0, a.length - b.length) + b;
            }
            if (a < b) {
                return 1;
            } else if (a > b) {
                return -1;
            }
        }
        if (arr1.length < arr2.length) {
            return 1;
        } else if (arr1.length > arr2.length) {
            return -1;
        }
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:nodejs实现版本号比较

          本文链接:https://www.haomeiwen.com/subject/hunxrktx.html