You can use .filter()
method of the Array
object:
var filtered = workItems.filter(function(element) { // Create an array using `.split()` method var cats = element.category.split(' '); // Filter the returned array based on specified filters // If the length of the returned filtered array is equal to // length of the filters array the element should be returned return cats.filter(function(cat) { return filtersArray.indexOf(cat) > -1; }).length === filtersArray.length; });
Some old browsers like IE8 doesn’t support .filter()
method of the Array
object, if you are using jQuery you can use .filter()
method of jQuery object.
jQuery version:
var filtered = $(workItems).filter(function(i, element) { var cats = element.category.split(' '); return $(cats).filter(function(_, cat) { return $.inArray(cat, filtersArray) > -1; }).length === filtersArray.length; });