Javascript: filter array of objects by array of strings
Just make use of Array.indexOf
var b = a.filter(function(item){return kpids.indexOf(item.id) > -1 });
Array.indexOf
returns the index of the argument passed in the array on which indexOf
is being called on. It returns -1
if there isn't the element which we are looking for.
So, we make sure that it index is greater than -1
Another nice alternative is using .filter with .includes:
var result = a.filter(item => kpis.includes(item.id))
You can use indexOf in filter, like this
var res = a.filter(function (el) {
return kpis.indexOf(el.id) >= 0;
});
Example