const v1 = "1.2.3a"
const v2 = "1.2.3c"
var result
const compareVersion = (a, b) => {
let arr1 = a.split(".")
let arr2 = b.split(".")
// 先比较第一位 Number()遇到无法解析的会返回NaN,所以用parseInt。
// Number.parseInt(arr1[0])和Number.parseInt(arr2[0])
compare(Number.parseInt(arr1[0]), Number.parseInt(arr2[0]))
// 比较第二位
// Number.parseInt(arr1[1])和Number.parseInt(arr2[1])
if (result === "v1=v2") {
compare(Number.parseInt(arr1[1]), Number.parseInt(arr2[1]))
}
// 前两位完全相同比较第三位
if (!result == "v1=v2") {
return
}
if (Number(arr1[2]) && Number(arr2[2])) {
// 全数字。直接比较
compare(Number(arr1[2]), Number(arr2[2]))
} else if (result === "v1=v2" && Number.isNaN(Number.parseInt(arr1[2])) && Number.isNaN(Number.parseInt(arr2[2]))) {
// 全字母,比较Unicode 编码
compare(arr1[2].charCodeAt(), arr2[2].charCodeAt())
} else if (result === "v1=v2" && check(arr1[2]) && check(arr2[2])) {
// 数字+字母
let num1 = Number.parseInt(arr1[2]);
let num2 = Number.parseInt(arr2[2]);
let word1 = arr1[2].split(num1)[1];
let word2 = arr2[2].split(num2)[1];
compare(num1, num2)
result === "v1=v2" ? compare(word1.charCodeAt(), word2.charCodeAt()) : ""
}
console.log(result)
}
// 检测数字字母组合
var check = (i) => {
var re = /^[0-9a-zA-Z]*$/g
if (re.test(i)) {
return true
}
return false
}
// 比较大小
var compare = (a, b) => {
if (a > b) {
result = "v1>v2"
return
} else if (a < b) {
result = "v1<v2"
return
} else {
result = "v1=v2"
return
}
}
compareVersion(v1, v2)
比较版本号
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 比较版本号1.1 = 1.1.0Bata1.0.0.1 = 1...11.2 > 1.1.32 > 1.92.0....