Skip to content

Commit 14ec9ea

Browse files
committed
优化模糊匹配方法
1 parent d357ae7 commit 14ec9ea

File tree

1 file changed

+17
-24
lines changed

1 file changed

+17
-24
lines changed

src/utils.js

+17-24
Original file line numberDiff line numberDiff line change
@@ -19,36 +19,29 @@ export const getSortData = arr => {
1919
}
2020
// 反推字典表
2121
export const getDictionary = (text, input) => {
22-
let words = input.trim().split(' ')
23-
let res = []
22+
input = input.replace(/\s/g, '')
23+
const keys = []
2424
const dfs = word => {
25-
let keys = [], len = word.length
25+
let len = word.length,
26+
start = 0, end = 0, index = 0, step = 0
2627
for (let i = len; i > 0; i--) {
2728
for (let j = 0; j < len + 1 - i; j++) {
28-
keys.push(word.substr(j, i))
29+
let curr = word.substr(j, i)
30+
index = getIndex(text, curr, keys)
31+
if (index === -1) continue
32+
start = word.indexOf(curr)
33+
end = start + curr.length
34+
step = index + curr.length
35+
values.push(curr)
36+
while (step > index) keys.push(index++)
37+
if (start - 0) dfs(word.slice(0, start))
38+
if (end - len) dfs(word.slice(end, len))
39+
return
2940
}
3041
}
31-
let start = 0, end = 0, index = 0, step = 0
32-
let flag = true
33-
for (let key of keys) {
34-
index = text.indexOf(key)
35-
if (index === -1) continue
36-
if (res.length && res.indexOf(index) > -1) continue
37-
start = word.indexOf(key)
38-
end = start + key.length
39-
step = index + key.length
40-
flag = false
41-
break
42-
}
43-
if (flag) return
44-
while (step > index) res.push(index++)
45-
if (start - 0) dfs(word.slice(0, start))
46-
if (end - len) dfs(word.slice(end, len))
47-
}
48-
for (let word of words) {
49-
dfs(word)
5042
}
51-
return res
43+
dfs(input)
44+
return keys
5245
}
5346
// 深拷贝 (这个随便复制的)
5447
export const deepCopy = data => {

0 commit comments

Comments
 (0)