求助, 未知bug

99 阅读1分钟

源码

求助

        // 格式化需要匹配的字符串, 转化为数组对象
        function formatStr(str) {
            let newArr = []
            let strArr = str.split('')
            let len = strArr.length
            for (let i = 0; i < len; i ++) {
                let obj = strArr[i]
                let newObj = {
                    'index': i,
                    'value': obj
                }
                newArr.push(newObj)
                delete newObj,obj
            }
            return newArr
        }
        // 格式化匹配的条件, 转化为数组对象
        function formatPtn(str) {
            let newArr = []
            let strArr = str.split('')
            let len = strArr.length
            for (let i = 0; i < len; i ++) {
                // console.log(i)
                let obj = strArr[i]
                let nextObj = ''
                if( (i + 1) <= len) {
                    nextObj = strArr[(i+1)]
                }
                // 判断是否有多个
                if (nextObj == '*') {
                    let newObj = {
                        'index': i,
                        'value': obj,
                        'more': 10
                    }
                    newArr.push(newObj)
                    i ++
                    delete newObj,obj
                } else {
                    let newObj = {
                        'index': i,
                        'value': obj,
                        'more': 1
                    }
                    newArr.push(newObj)
                    delete newObj,obj
                }
            }
            return newArr
        }          
        function check(a, b) {
            if (b.value == '.') {
                return true
            } else if (a && (a.value == b.value)) {
                console.log('check', true)
                return true
            } else {
                return false
            }
        }
        function checkStr(newStr, newPtn, ptnLen = 0) {
            ptnLen = newPtn.length
            console.log(ptnLen, 88)
            if (ptnLen == 0) {
                return true
            }
            let strlen = newStr.length
            let fontStr = newStr[0]
            let backStr = newStr[(strlen - 1)]
            let fontPtn = newPtn[0]
            let backPtb = newPtn[(ptnLen - 1)]
            console.log(backPtb, fontPtn, 77)
            let fontResult = check(fontStr, fontPtn)
            let backResult = check(backStr, backPtb)
            console.log(fontResult == backResult)
            console.log(fontResult, backResult)
            if (fontResult && backResult) {
                if(ptnLen >= 3) {
                    // console.log(newPtn)
                    let strArr = newStr.slice(1, (strlen - 1))
                    let ptnArr = newPtn.slice(1, (ptnLen - 1))
                    console.log(strArr, ptnArr)
                    console.log(999)
                    checkStr(strArr, ptnArr)
                    delete ptnArr
                } else {
                    return true
                }
                // return false
                console.log(ptnLen, 99)
                delete backResult, fontResult, ptnLen, strlen                   
            } else {
                return false
            }
        }
        function checkAll(str, ptn) {
            console.log(str, ptn)
            let newStr = formatStr(str)
            let newPtn = formatPtn(ptn)
            console.log(newStr, newPtn)
            let result = checkStr(newStr, newPtn)
            console.log(result, 999)
        }

        let str = 'aa';
        let ptn = 'ab*a';
        // console.log(formatPtn('12*23123'))
        checkAll(str, ptn)
        
        
        控制台输出结果与执行顺序不正常

截图