I want to be able to filter an array with one or many conditions.
Consider this sample data & filter criteria:
var data = [
{company: "Acme", fiscal_period: '01-2019', value: 10},
{company: "Acme", fiscal_period: '02-2019', value: 15},
{company: "Wonka", fiscal_period: '01-2019', value: 8},
{company: "Wonka", fiscal_period: '02-2019', value: 11}
]
var filter = [{field: "company", value: "Acme"}]
console.log(myFilterFunction(data,filter));
// Desired output
// [
// {company: "Acme", fiscal_period: '01-2019', value: 10},
// {company: "Acme", fiscal_period: '02-2019', value: 15}
// ]
// Now use two filters:
var filter = [{field: "company", value: "Acme"},{field: "fiscal_period", value: "01-2019"}]
console.log(myFilterFunction(data,filter);
// Desired output
// [
// {company: "Acme", fiscal_period: '01-2019', value: 10},
// ]
But how to write the myFilterFunction?
I know how to make it work with a static filter:
myFilterFunction = function(data,filter){
return data.filter(function(el){
return el[filter.field] === filter.value;
});
}
console.log(myFilterFunction(data,{field: "company", value: "Acme"});
But how to make it work dynamically if I want to have multiple filters?