Я создаю сайт недвижимости , где пользователи могут применять фильтры. Один из фильтров, который я хочу установить, состоит в том, есть ли в собственности балкон, терраса на крыше и сад .
Поэтому, когда у меня установлен только один флажок (балкон), я хочу показать всесвойства с балконами. Но когда у меня установлены два флажка (например, сад и балкон), я хочу отобразить только свойства с этими специфическими качествами, которые имеют сад и балкон.
У меня есть довольно сложное и сложное решение. В настоящее время у меня есть только 3 флажка, но что если я добавлю еще 5? Код станет очень неэффективным, и все должно быть закодировано снова.
Вот мое «сложное» решение:
var filters = {
balcony: false,
garden: false,
roofTerrace: false
};
const checkboxFilter = plotAreaFilter.filter((item) => {
// If only Balcony is checked
if (filters.balcony && !filters.roofTerrace & !filters.garden) {
if (item.balcony) {
return true
}
}
// If both Balcony and Roof Terrace is checked
else if (filters.balcony && filters.roofTerrace & !filters.garden) {
if (item.balcony && item.roofTerrace) {
return true
}
}
// If all three Balcony, Roof Terrace and Garden is checked
else if (filters.balcony && filters.roofTerrace & filters.garden) {
if (item.balcony && item.roofTerrace && item.garden) {
return true
}
}
// If only Roof Terrace is checked
else if (!filters.balcony && filters.roofTerrace & !filters.garden) {
if (item.roofTerrace) {
return true
}
}
// If only Garden is checked
else if (!filters.balcony && !filters.roofTerrace & filters.garden) {
if (item.garden) {
return true
}
}
// If both Roof Terrace and Garden is checked
else if (!filters.balcony && filters.roofTerrace & filters.garden) {
if (item.roofTerrace && item.garden) {
return true
}
}
// If only Balcony and Garden is checked
else if (filters.balcony && !filters.roofTerrace & filters.garden) {
if (item.balcony && item.garden) {
return true
}
} else {
return true
}
})
return checkboxFilter;
Я действительно надеюсь, что есть лучшее решение для этого