@ChrisJonson

Как сделать фильтр массива на React с поиском и параметрами?

Есть массив из телефонов и ноутбуков.

{
		"id": 1,
		"category": "notebooks",
		"brand": "lenovo",
		"title": "Ноутбук Lenovo G50-30",
	},
	{
		"id": 2,
		"category": "notebooks",
		"brand": "lenovo",
		"title": "Ноутбук Lenovo G70-35",
	},
	{
		"id": 10,
		"category": "phones",
		"brand": "samsung",
		"title": "Смартфон Samsung Galaxy S7 32GB Black Onyx",
	},
	{
		"id": 11,
		"category": "phones",
		"brand": "samsung",
		"title": "Смартфон Samsung Galaxy A3 (2016) Black",
	}


Есть фильтр по поиску в массиве

let filteredData = this.state.data.filter((item) =>{
			return item.title.toLowerCase().indexOf(this.props.filterToChild) !== -1;
		});


filteredData прогоняется по циклу.

Как к этому фильтру добавить фильтрацию по категории и брендам, то есть, чтобы кроме поиска были чекбоксы по категориям "Смартфоны", "Ноутбуки" и по брендам "lenovo", "samsung"?
  • Вопрос задан
  • 6707 просмотров
Решения вопроса 1
@lemme
Frontend
Я бы сделал универсальный фильтр.

function filterBy(data, field, value) {
	return data.filter(item => item[field] === value);
}

const notebooks = filterBy(this.props.data, 'category', 'notebooks');
const lenovoNotebooks = filterBy(notebooks, 'brand', 'lenovo');
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы