Urara-Blog/node_modules/.pnpm-store/v3/files/f9/c186c242bf57cf78f19efe756c6448d5f0404347b3deaf1c28cfd9162c87dd0c132dbc3cf95655f612b6515b01f56f80988db64748bbda21dfc472f8b6a28a
2022-08-14 01:14:53 +08:00

45 lines
No EOL
715 B
Text

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.findSuggestion = findSuggestion;
const {
min
} = Math;
function levenshtein(a, b) {
let t = [],
u = [],
i,
j;
const m = a.length,
n = b.length;
if (!m) {
return n;
}
if (!n) {
return m;
}
for (j = 0; j <= n; j++) {
t[j] = j;
}
for (i = 1; i <= m; i++) {
for (u = [i], j = 1; j <= n; j++) {
u[j] = a[i - 1] === b[j - 1] ? t[j - 1] : min(t[j - 1], t[j], u[j - 1]) + 1;
}
t = u;
}
return u[n];
}
function findSuggestion(str, arr) {
const distances = arr.map(el => levenshtein(el, str));
return arr[distances.indexOf(min(...distances))];
}