比较版本号

        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

你可能感兴趣的:(比较版本号)