比较版本号

326 阅读1分钟

前些日子,接到一个需求,要求小于某个版本号的数据要在用户界面上面给一个提示。提示用户去升级新版本。刚开始的时候觉得很简单,不过又考虑到很多复杂的场景,就觉得不简单了。版本号的基本约束如下:

首先版本号都是由非负整数和'.'组成的,不存在其他的字符。

版本号可以存在多级,例如‘1.2.3.4’。

忽略某一级中的前导0,例如‘1.002’,‘1.02’及’1.2‘,可以认为这三个版本号相等。

当两个需要比较的版本号级数不同的时候,默认用‘0’来填充,例如‘1.0’和‘1.0.0’,可以认为相等。

考虑到这些场景,就写下了如下代码:

var compareVersion = function (version1, version2) {    const subVersion1List = version1.split('.').map(n => parseInt(n, 10));    const subVersion2List = version2.split('.').map(n => parseInt(n, 10));    const maxLen = Math.max(version1.length, version2.length);    for (let i = 0; i < maxLen; i++) {        const subV1 = subVersion1List[i] || 0;        const subV2 = subVersion2List[i] || 0;        if (subV1 > subV2) {            return 1;        } else if (subV1 < subV2) {            return -1;        }    }    return 0;};

希望对你有帮助吧。。。