Javascript 根据typeScript中的多个条件筛选对象数组

Javascript 根据typeScript中的多个条件筛选对象数组,javascript,arrays,typescript,kendo-grid,Javascript,Arrays,Typescript,Kendo Grid,嗨,团队,我有一系列像 data = [ { name: "Pork", category: "Food", subcategory: "Meat" }, { name: "Pepper", category: "Food", subcategory: "Vegetables" }, { name: "Beef", category: "

嗨,团队,我有一系列像

data = [
  { name: "Pork", category: "Food", subcategory: "Meat" },
  { name: "Pepper", category: "Food", subcategory: "Vegetables" },
  { name: "Beef", category: "Food", subcategory: "Meat" },
  { name: "banana", category: "Food", subcategory: "Fruit" }
];
这里我需要根据过滤条件过滤
数据
数组

{
   "filters":[
      {
         "filters":[
            {
               "field":"subcategory",
               "operator":"eq",
               "value":"Vegetables"
            }
         ],
         "logic":"or"
      },
      {
         "filters":[
            {
               "field":"name",
               "operator":"eq",
               "value":"Pepper"
            },
            {
               "field":"name",
               "operator":"eq",
               "value":"banana"
            }
         ],
         "logic":"or"
      }
   ],"logic":"and"
}
我只需使用
Kendo
中的
process()
就可以做到这一点

kendo.data.Query.process(data, {
  filter: {
    logic: "and",
    filters: [{
      field: "subcategory",
      value: "Meat",
      operator: "eq"
    }],logic:"or"
  }
});

那么,有没有其他方法可以在不使用
process()
的情况下进行这样的筛选?

这种方法将
筛选对象作为条件的量词,该对象包含一个数组和一个逻辑部分

数组可以包含其他具有
过滤器
量词作为
逻辑
的对象,或者包含具有单个属性约束的对象,这些约束必须与给定数据数组的项匹配

实际上只实现了一个操作符

const
运算符={eq:(a,b)=>a==b},
量词={和:'every',或'some'},
filter=({filters,logic})=>item=>filters[量词[logic]](f=>f中的'filters'
?过滤器(f)(项目)
:运算符[f.operator](项目[f.field],f.value)
),
filters={filters:[{field:“subcategory”、运算符:“eq”、值:“vegets”}、逻辑:“or”}、{filters:[{field:“name”、运算符:“eq”、值:“banana”}、逻辑:“or”}、逻辑:“and”},
数据=[{名称:“猪肉”,类别:“食品”,子类别:“肉”},{名称:“胡椒”,类别:“食品”,子类别:“蔬菜”},{名称:“牛肉”,类别:“食品”,子类别:“肉”},{名称:“香蕉”,类别:“食品”,子类别:“水果”},
结果=data.filter(filter(filters));
控制台日志(结果)

作为控制台包装{max height:100%!important;top:0;}
有什么区别?区别在于我有一个过滤器数组。这意味着条件可以像[{price=500,num_of_beds>=2,num_of_beats>=2},{price=500,num_of_beats>=2,num_of_beats>=2}]让我试试看Hi Nina,这将为条件过滤器返回空数组=[{field:“subcategory”,value:“Meat”,operator:“eq”},{field:“name”,value:“Pepper”,operator:“eq}”],
每个
都是逻辑的,看起来你需要一些
,它们是逻辑的或。尼娜,过滤条件的结构有一个错误。我已经更新了问题。很抱歉给您带来不便,请看一看。