Я пытаюсь реализовать фильтр конвейера по нескольким значениям по нескольким атрибутам в таблице.
Я могу отфильтровать несколько значений по одному атрибуту. Но я не могу сделать это для нескольких значений нескольких атрибутов.
Реализация моего конвейерного фильтра для нескольких значений в одном атрибуте,
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'vFilter',
pure: false
})
export class VFilterPipe implements PipeTransform {
transform(vList: any[], vfilter?: any): any {
if (!vList|| !Object.keys(vfilter).length) {
return vList;
}
return vList.filter(item => {
for (let key in vfilter) {
for(let value in vfilter[key]){
if ((item[key] === undefined || item[key] == vfilter[key][value]))
{
return true;
}
}
return false;
}
return false;
});
}
}
Мой входной массив задан,
vList = [{'name':'jack','age':'25'},{'name':'sam','age':'25'},{'name':'smith','age':'25'},{'name':'jack','age':'28'}]
vfilter = {'name':['jack','sam'],'age':['25']}
Я ожидаю вывод, подобный приведенному ниже, после фильтрации,
vList = [{'name':'jack','age':'25'},{'name':'sam','age':'25'}]
Но я получаю следующий результат,
vList = [{'name':'jack','age':'25'},{'name':'sam','age':'25'},{'name':'jack','age':'28'}]
Может кто-нибудь помочь мне в решении этой логической проблемы.