Я пытаюсь отфильтровать таблицу соответствия, сопоставляя точные строки для столбца, например, это две строки в одном столбце:
- Джек хочет щенка
- Джек хочет puppy dog
Если я ищу Jack dog , то должна отображаться только вторая строка, содержащая строку. Поэтому я должен иметь возможность применять фильтр, используя несколько ключевых слов для отображения результатов. Я попытался настроить предикат фильтра, но фильтр не работает, когда я набираю Джек Дог . это проходит, если я наберу Джек хочет щенка точно. Можно ли настроить поиск так, чтобы он соответствовал буквам независимо от пробела и символов? т. е. jack do должен отображать только один результат. Вот мой подход
this.dataSource.filterPredicate =
(data: UserData, filters: string) => {
const matchFilter = [];
const filterArray = filters.split(/[\s,]+/);
const columns = (<any>Object).values(data);
// OR be more specific [data.name, data.race, data.color];
// Main
filterArray.forEach(filter => {
const customFilter = [];
columns.forEach(column => customFilter.push(column.toLowerCase().includes(filter)));
matchFilter.push(customFilter.some(Boolean)); // OR
});
return matchFilter.every(Boolean); // AND
}
applyFilterSimple(filterValue: string) {
const filtersSimple = filterValue.trim().toLowerCase();
this.dataSourceSimple.filter = filtersSimple;
}