OP could definitely have used more examples, but I think he's on the right track. Where declarative or functional programming comes in really handy is composition. Underscore has a lot of utilities that make it easy.
var genericFilter = function(type, value) {
return function(items) {
return _.filter(items, function(i) {
return i[type] === value;
});
}
};
var sizeFilter = genericFilter('size', selectedSize);
var brandFilter = genericFilter('brand', selectedBrand);
var appliedFilters = _.compose(sizeFilter, brandFilter);
var filteredItems = appliedFilters(items);
// which ends up doing sizeFilter(brandFilter(items));