我试图用一个表单的四个字段过滤一个对象array.这四个字段都是可组合的.
这四个字段是:2个下拉列表和2个文本框.
当我点击按钮时,我必须根据所选字段过滤数据.这是我在单击搜索按钮时调用的方法:
filterData(form: NgForm) {
if (this.gridValueClone) {
const filterType = form.value.selectedItemsType;
const filterCompany = form.value.selectedItemsCompany;
const filterDescription = form.value.description;
const filterNameFile = form.value.nameFile;
if (filterType.length > 0 || filterCompany.length > 0 || filterDescription || filterNameFile) {
let search;
let arrFilter = [];
if (filterType.length > 0) {
arrFilter.push({
"field": "type",
"value": filterType
});
}
if (filterCompany.length > 0) {
arrFilter.push({
"field": "company",
"value": filterCompany
});
}
if (filterDescription) {
arrFilter.push({
"field": "description",
"value": filterDescription
});
}
if (filterNameFile) {
arrFilter.push({
"field": "name",
"value": filterNameFile
});
}
const results = this.gridValueClone.filter(data=> {
arrFilter.forEach(filter => {
search = data[filter.field] === filter.value;
});
return search;
});
if (results) {
this.reportsGridValue = results;
} else {
this.reportsGridValue = [];
}
}
}
}
据我所知,它可以正确地与文本框(描述和文件名)的过滤器一起工作,您可以 Select 一个框,或者将它们组合起来,很好地进行过滤.
但我不知道如何合并多个 Select 过滤器(类型和公司),下面我将举一个例子,说明如果我 Select 了搜索所需的所有过滤器,我将获得的对象:
arrFilter = [
{
"field":"type",
"value":[
"Type1",
"Type2",
"Type3",
"Type4"
]
},
{
"field":"company",
"value":[
"CompanyA",
"CompanyB"
]
},
{
"field":"description",
"value":"Prueba"
},
{
"field":"name",
"value":"Prueba.txt"
}
]
有什么建议吗?非常感谢.