[英]Filter data in JavaScript with more than one filter value
我有一个 web 应用程序,它显示产品并有两个复选框作为过滤器。 “显示可用产品”和“显示带有照片的产品”。
当您分别单击其中任何一个时,它们会自行正确过滤。 如果您同时选择 select 两个复选框,则它们不能一起工作。
到目前为止,我对下面的过滤器代码有什么:
const getFilteredSearchResults = (filters: Types.searchFilters, famData) => {
//filter based on all search filters
let filteredResults = _.filter(famData, function (p) {
//apply filters
if (
typeof p["serial-number"] === "undefined" ||
(filters.rentalFleetAvailability && p["availability"] === "No") ||
(filters.rentalFleetWithImages &&
(p["photos"] === undefined || !p["photos"].length))
) {
return false; //don't include in listings
} else if (
filters.rentalFleetAvailability &&
p["availability"] === "Yes" &&
filters.rentalFleetWithImages &&
p["photos"].length
) {
return true; //include in listings
} else {
return true; //include in listings
}
});
};
鉴于我从您的编辑和评论中收集到的信息,这就是我认为您想要的
const getFilteredSearchResults = (filters: Types.searchFilters, famData) => {
//filter based on all search filters
let filteredResults = _.filter(famData, function (p) {
//apply filters
if (
typeof p["serial-number"] === "undefined" ||
(filters.rentalFleetAvailability && p["availability"] === "No") ||
(filters.rentalFleetWithImages &&
(p["photos"] === undefined || !p["photos"].length))
) {
//First condition falied we are definetely not accepting this item no need to check other condition
return false; //don't include in listings
} else {
//First condition passed we need to check second
if (filters.rentalFleetAvailability &&
p["availability"] === "Yes" &&
filters.rentalFleetWithImages &&
p["photos"].length){
//Both conditions are met here we return true
return true; //include in listings
}else{
//second condition not met we do not include this
return false;
}
}
});
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.