前些日子,接到一个需求,要求小于某个版本号的数据要在用户界面上面给一个提示。提示用户去升级新版本。刚开始的时候觉得很简单,不过又考虑到很多复杂的场景,就觉得不简单了。版本号的基本约束如下:
首先版本号都是由非负整数和'.'组成的,不存在其他的字符。
版本号可以存在多级,例如‘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;};希望对你有帮助吧。。。