源码
求助
// 格式化需要匹配的字符串, 转化为数组对象
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)
控制台输出结果与执行顺序不正常
截图
