Я просто занимаюсь некоторыми исследованиями в Typeahead.js
, и это действительно крутая библиотека. Мне удалось получить базовый пример работы с благодарностью к документации, которая тоже очень хороша.Объяснение функции substrahead.js substringMatcher
Однако я пытаюсь понять, что делает следующий блок кода?
var substringMatcher = function(strs) {
return function findMatches(q, cb) {
var matches, substringRegex;
// an array that will be populated with substring matches
matches = [];
// regex used to determine if a string contains the substring `q`
substrRegex = new RegExp(q, 'i');
// iterate through the pool of strings and for any string that
// contains the substring `q`, add it to the `matches` array
$.each(strs, function(i, str) {
if (substrRegex.test(str)) {
matches.push(str);
}
});
cb(matches);
};
};
В примере она передается в при инициализации машинописного в качестве опции source
. Я могу понять, что он принимает входные данные из текстового поля и сравнивает его с набором данных, но я немного смущен относительно того, что такое q
и cb
?
Хорошо, это имеет смысл, есть ли причина, почему автор пошел с анонимной функцией в этом случае? – Javacadabra
Похоже, это похоже на форму currying, где strs - список строк, удерживаемых в закрытии. В принципе, удобный способ фильтрации strs по q –
Хорошо оцените вашу помощь в этом, делает вещи намного яснее! Я ненавижу не понимать, что делает каждая строка. – Javacadabra