Вы можете связать фильтры:
filteredList = list
.filter(list => list.name.toLowerCase().includes(searchfield.toLowerCase()))
.filter(list => list.categories[0].toLowerCase().includes(selectedcategory.toLowerCase()));
Или даже записать его как один фильтр:
filteredList = list.filter(
list => list.name.toLowerCase().includes(searchfield.toLowerCase()) &&
list.categories[0].toLowerCase().includes(selectedcategory.toLowerCase())
);
Если вам нужно поведение ИЛИ вместо И, тогда используйте подход с одним фильтром и замените &&
на ||
, очевидно.
Относительно вопроса из комментария:
Чтобы использовать все категории в вашем фильтре, вы можете использовать some
или every
(в зависимости от желаемой логики):
filteredList = list.filter(
list => list.name.toLowerCase().includes(searchfield.toLowerCase()) &&
list.categories.some(
cat => cat.toLowerCase() === selectedcategory.toLowerCase()
)
);