I have result type of object. I want to filter the records from the result obj. I have 3 filters in my form (Search by name, city, email). All filters are multi-select. Now I want to filter my result records by the above filters array.
User filtered by records using below array
var searchByname = ['john', 'test1'];
var searchByEmail = ['[email protected]', '[email protected]'];
var searchByCity = ['CA', 'LA'];
Actual result object from where the filter should be done
var result = [
{
'name': 'john',
'email': '[email protected]',
'city': 'CA',
'phone': 425663313
},
{
'name': 'test1',
'email': '[email protected]',
'city': 'LA',
'phone': 7418669633
},
{
'name': 'Dyna',
'email': '[email protected]',
'city': 'New York',
'phone': 12345666
}
]
I tried below solution but it filter only any one filter records
var filteredArray_1 = result.filter(function(itm){
return searchByname.indexOf(itm.name) > -1;
});
var filteredArray_2 = result.filter(function(itm){
return searchByEmail.indexOf(itm.email) > -1;
});
var filteredArray_3 = result.filter(function(itm){
return searchByCity.indexOf(itm.city) > -1;
});
let finalArray = [...filteredArray_1, ...filteredArray_2, ...filteredArray_3];
Expected Output
var result = [
{
'name': 'john',
'email': '[email protected]',
'city': 'CA',
'phone': 425663313
},
{
'name': 'test1',
'email': '[email protected]',
'city': 'LA',
'phone': 7418669633
},
]