У меня есть поле ввода для пользователя, который слушает музыку и пытается найти правильного исполнителя или название трека.
<input type="search" id="search" class="form-control form-control-lg" name="search" autocomplete="off" autofocus>
Я бы хотел сравнить его с двумя переменными JavaScript:
- track_name = "Alicia Keys";
- artist_name = "Fallin '";
Проблема заключается в обработке ошибок при наборе текста человеком.
например: "alicia key falin" должен возвращать true для исполнителя и названия трека.
Я уже пробовал сценарии о Расстояние Хэмминга , а также о библиотеке fusejs , но результат меня не убеждает.
Актуальные тесты:
function hammingDistance(str1, str2) {
var dist = 0;
str1 = str1.toLowerCase();
str2 = str2.toLowerCase();
for (var i = 0, j = Math.max(str1.length, str2.length); i < j; i++) {
if (!str1[i] || !str2[i] || str1[i] !== str2[i]) {
dist++;
}
}
return dist;
}
Целью является предотвращение ошибок, связанных с заглавными и строчными буквами, дефисами, точками, запятыми, числами, особенностями, умениями и т. Д.
Есть ли библиотеки или сценарии для правильной обработки?