Я пытаюсь фильтровать данные JSON, используя элемент input[type="range"]
. Я достиг точки, где работает фильтр, но он не работает отлично.Слишком строгая логика фильтрации
Предположим, по умолчанию filters
объект выглядит следующим образом:
filters = {
price: 100,
rating: 3,
beds: 1,
people: 1
}
Используя эту концепцию, и изменение значения filters
на input
случае квартиры фильтруются очень строго, с учетом значений контакта по умолчанию и значения в пользователь действительно хотел отфильтровать.
apartments = apartments.filter(apartment => {
if (typeof apartment.price == 'string') {
apartment.price = apartment.price.replace(/^\D+/g, '');
}
if (apartment.price <= (filters.price - 100) ||
apartment.price >= filters.price) {
return false;
}
if (apartment.rating != filters.rating)
return false;
if (apartment.beds != filters.beds)
return false;
if (apartment.people != filters.people)
return false;
else
return true;
});
Вопрос здесь:
Как я могу сделать фильтр лучше только принимая во внимание значение фильтра, что пользователь изменил?
Я попытался просто удалить значения по умолчанию, но в этом случае никогда не может быть соответствия для фильтра, потому что значение не существует, и, поместив значение по умолчанию, квартиры строго фильтруются со всеми 4 значениями, даже если только пользователь изменил один из них.
Вот как фильтры смотрят на мое приложение: http://prntscr.com/e6h3oq
Это одна квартира представлена в формате JSON:
{
"id":1,
"title":"ultrices posuere cubilia curae",
"description":"Suspendisse potenti. In eleifend quam a odio. In hac habitasse platea dictumst.\n\nMaecenas ut massa quis augue luctus tincidunt. Nulla mollis molestie lorem. Quisque ut erat.",
"date":"3/9/2016",
"price":"£200.32",
"rating":2,
"address":"7 Harbort Drive",
"beds":2,
"people":2,
"user":{
"first_name":"Douglas",
"last_name":"Hansen",
"email":"[email protected]",
"phone":"66-(363)851-6428"
}
}