Я изучаю, как выполнить поиск по нескольким словам. Я нашел этот пример Многоканальный фильтр с крючками .
const filterIt = (terms, arr) => {
if ("" === terms || terms.length < 3) return arr;
const words = terms.match(/\w+|"[^"]+"/g);
words.push(terms);
return arr.filter((a) => {
const v = Object.values(a);
const f = JSON.stringify(v).toLowerCase();
return words.every(val => f.includes(val));
});
};
const FilteredList = () => {
const [items, setItems] = useState([]);
const filterList = useCallback(({target}) => {
const searchQuery = target.value.toLowerCase();
const updatedList = filterIt(searchQuery, initialItems);
setItems(updatedList);
}, []);
Я пытаюсь изменить его, чтобы я мог разделять слова пробелом. Например, я ввожу «железный костюм», и поиск дал мне:
At the moment, the search does not return anything:
введите описание изображения здесь
Будем признательны за любые советы.