[英]Filter array of objects by array of objects [TypeScript] [ES6]
如何通過帶有條件的對象數組過濾對象數組。
接口:
interface Person {
age: number;
available: boolean;
}
interface PersonFilter {
predicateFn(arg: Person): boolean;
}
數據:
const persons = [
{
"age": 2,
"available": false
},
{
"age": 5,
"available": true
}
];
過濾條件:
const filters = [
{predicateFn: person => person.available},
{predicateFn: people => person.age > 2}
];
如何使用當前過濾器結構過濾此對象數組?
function getFilteredPersons(filters): Person[]{
return persons.filter( ?? );
}
預期產量:
[
{
"age": 5,
"available": true
}
]
您可以使用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.