简体   繁体   English

按对象数组过滤对象数组[TypeScript] [ES6]

[英]Filter array of objects by array of objects [TypeScript] [ES6]

How to filter array of objects by array of objects with conditions. 如何通过带有条件的对象数组过滤对象数组。

Interfaces: 接口:

interface Person {
    age: number;
    available: boolean;
}

interface PersonFilter {
    predicateFn(arg: Person): boolean;
}

Data: 数据:

const persons = [
  {
    "age": 2,
    "available": false
  },
  {
    "age": 5,
    "available": true
  }
];

Conditions to filter: 过滤条件:

const filters = [
    {predicateFn: person => person.available},
    {predicateFn: people => person.age > 2}
];

How to filter this array of objects using current filters structure ? 如何使用当前过滤器结构过滤此对象数组?

function getFilteredPersons(filters): Person[]{
return persons.filter( ?? );
}    

Expected output: 预期产量:

  [
      {
        "age": 5,
        "available": true
      }
    ]

You can try it with the Array.prototype.every function, it would be something like: 您可以使用Array.prototype.every函数来尝试它,就像这样:

 const persons = [{ age: 2, available: false }, { age: 5, available: true } ]; const filters = [{ predicateFn: person => person.available }, { predicateFn: person => person.age > 2 } ]; function getFilteredPersons(filters) { return persons.filter(p => filters.every(filter => filter.predicateFn(p))); } console.log(getFilteredPersons(filters)); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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