sapui5 如何使用 AND 和 OR 条件构造嵌套过滤器

sapui5 how to construct nested filters with AND and OR conditions

本文关键字:嵌套 过滤器 条件 OR 何使用 AND sapui5      更新时间:2023-09-26

嗨,我有一个对象,其中包含类似的数据

{
 status : [ "started", "completed"],
 branch : [ "India", "Germany" ]
}

在这里,我想构造嵌套过滤器,例如状态为"已开始"或"已完成",并且分支为"印度"或"德国

"

我尝试了下面的代码

var oFilter = new sap.ui.model.Filter(
   keys.forEach(function(v) {
     var oItem = totalFilterValues[v];
     if(v === "status"){
         return new sap.ui.model.Filter(oItem.forEach(function(val) {
              return new sap.ui.model.Filter("status",   
                  sap.ui.model.FilterOperator.Contains, val);
      }), false);
    } 
    if(v === "branch"){
         return new sap.ui.model.Filter(oItem.forEach(function(val) {
              return new sap.ui.model.Filter("branch",   
                  sap.ui.model.FilterOperator.Contains, val);
      }), false);
    } 
  }),true);

但是没有工作,你能帮我吗? 我遵循下面的代码片段。

    var oFilter = new sap.ui.model.Filter(mFacetFilterLists.map(function(oList) {
      return new sap.ui.model.Filter(oList.getSelectedItems().map(function(oItem) {
        return new sap.ui.model.Filter(oList.getTitle(), "EQ", oItem.getText());
      }), false);
    }), true);

对于多个过滤器:

var oStatusFilter = new sap.ui.model.Filter('status', function(oValue) {
    if (oValue === "started" || oValue === "completed")
        return true;
    else return false;
});
var oCountryFilter = new sap.ui.model.Filter('branch',
    function(oValue) {
        if (oValue === "India" || oValue === "Germany")
            return true;
        else return false;
    }
);
var oFilters = new sap.ui.model.Filter([oCountryFilter, oStatusFilter], true
});

在此处阅读更多内容 SAPUI5 过滤器