繁体   English   中英

过滤 JavaScript 中的数据,过滤值超过一个

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM