Давно не писал JavaScript, так что это, вероятно, очень очевидная ошибка.
с использованием RegExp.match (..) в JavaScript, он не собирает и не пропускает первый символ в искомых строках. Ниже приведен вывод из списка строк:
*query = 'g'*
Genetic engineering: g,g
Gene therapy: null
Surfactant: null
Human cloning: g
Protein production: null
Microfluidics: null
Polymerase chain reaction: null
RNA: null
Restriction enzyme: null
Picotechnology: g
Femtotechnology: g
Grey goo: g
Molecular engineering: g,g
Microfluidics: null
Molecular nanotechnology: g
Nanoengineering: g,g
Atom probe: null
Maxwell's demon: null
Так, например, «Генная инженерия» должна быть: g, g, g, но первый (и только первый) символ опущен. Например, если я напечатал «enetic», то генная инженерия будет успешно соответствовать.
Вот код:
function createFilterFor(query) {
return function filterFn(state) {
let re = new RegExp(query, 'g');
console.log(state+":\t"+state.match(re,'ig'))
return (state.match(re,'ig') != null? true : false );
};
}
Эта функция возвращает список элементов для текстового поля поиска, например:
(8) ["Genetic engineering", "Human cloning", "Picotechnology", "Femtotechnology", "Grey goo", "Molecular engineering", "Molecular nanotechnology", "Nanoengineering"]