Я хочу сделать фильтр для массива объекта
Чтобы сделать этот фильтр, я получил этот канал:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'filter'
})
export class FilterPipe implements PipeTransform {
transform(items: any[], searchText: string[]): any[] {
if (!items) { return []; }
if (!searchText || searchText.length <= 0) { return items; }
return items.filter(item => {
return Object.keys(item).some(key => {
return String(item[key]).toLowerCase().includes(searchText[0]);
});
});
}
}
Мой массив:
[
{
"drinkPreference":"Apple",
"email":"emailmyemail@gmail.com",
"firstName":"fgsfdg",
"id":"_ihaj8q0uh",
"lastName":"Test"
},
{
"drinkPreference":"NoDrink",
"email":"Test@live.fr",
"firstName":"Marc",
"id":"_rhahpcz3h",
"lastName":"Lander"
},
{
"drinkPreference":"Banana",
"email":"dsfgf@lkive.fr",
"firstName":"fdgsdg",
"id":"_5l63di4x5",
"lastName":"fdgfsd"
},
{
"drinkPreference":"NoDrink",
"email":"myemailgmail@gmail.com",
"firstName":"qfdqsfdsq",
"hobbies":[
"qsfqd"
],
"id":"_byvwezzs4",
"lastName":"look"
}
]
И, например, мой массив фильтров:
arrayfilter = ["Lander","Test"]
Он должен вернуть меня:
[
{
"drinkPreference":"Apple",
"email":"emailmyemail@gmail.com",
"firstName":"fgsfdg",
"id":"_ihaj8q0uh",
"lastName":"Test"
},
{
"drinkPreference":"NoDrink",
"email":"Test@live.fr",
"firstName":"Marc",
"id":"_rhahpcz3h",
"lastName":"Lander"
}
]
Но он возвращает только те элементы, которые соответствуют моему первому элементу arrayfilter, поэтому элементы "Lander" .
Как я могу изменить свою функцию pip, чтобы получить все результаты?
Спасибо!