$scope.filterByCurrentFilter = function (entity) { var selectedFilters = {}; for (var filterName in $scope.filter) { var criteria = $scope.filter[filterName]; for (var criteriaName in criteria) { if (criteria[criteriaName]) { var criteriaVals = selectedFilters[filterName] || []; criteriaVals.push(criteriaName); if (criteriaVals.length > 0) selectedFilters[filterName] = criteriaVals; } } } for (var key in selectedFilters) { var filterVals = selectedFilters[key]; if (!filterVals || filterVals.length === 0) continue; var entityVal = entity[key]; entityVal = angular.isArray(entityVal) ? entityVal : [entityVal]; var matches = entityVal.some ( function(item) { // jshint ignore:line return filterVals.indexOf(item) != -1; }); if (!matches) return false; } return true; };