共计 1042 个字符,预计需要花费 3 分钟才能阅读完成。
工作中经常会遇到一些版本兼容问题,从而需要对某一特定版本或者此版本上下版本进行筛选,这里我们以 4 位版本为例,写一个简易的版本对比算法。
例如:
需比对的版本,version = ‘1.16.1.0’
参考版本:current = ‘1.5.2.2’
/* 方法说明
* _numberFormater 数字格式化,不足前面补 0
* param {string,number} number 需要格式化的数据
* param {number} n 格式化的长度
* return {string} 返回格式化后的数据
*/
const _numberFormater = (number, n) => {number = `0000000000000000${number}`
return number.substring(number.length - n)
}
/* 方法说明
* checkVersion 版本号比对
* param {string} version 需比对的版本
* param {string} current 参照版本
* return {number} 0:相等 1:大于 -1:小于
*/
const checkVersion = (version, current) => {if (!version || !current) {return false}
version = version.split('.')
current = current.split('.')
const length = current.length
// 每位转为 000 格式 权值依次减少 1000 100 10 1
for (let i = 0; i < length; i++) {version[i] = _numberFormater(version[i], length)
current[i] = _numberFormater(current[i], length)
}
const versionNumner = +version[0] * 1000 + +version[1] * 100 + +version[2] * 10 + +version[3] * 1
const currentNumner = +current[0] * 1000 + +current[1] * 100 + +current[2] * 10 + +current[3] * 1
if (versionNumner > currentNumner) {return 1} else if (versionNumner === currentNumner) {return 0} else {return -1}
}
使用
checkVersion('1.16.1.0', '1.5.2.2'); // 1
正文完