Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function intersectionFilter(service, filters, filterParams) {
- if (!Array.isArray(filters) || !Array.isArray(filterParams))
- throw new Error('Filters and params must be arrays');
- if (filters.length !== filterParams.length)
- throw new Error('Must provide as much filters as params');
- if (filters.length < 2) throw new Error('Must provide at least two filters and filter params');
- if (filters.length === 2) {
- const [filter, lastFilter] = filters;
- const [param, lastParam] = filterParams;
- return filter(service, param) && lastFilter(service, lastParam);
- }
- const [filter, ...filtersLeft] = filters;
- const [param, ...paramsLeft] = filterParams;
- return filter(service, param) && intersectionFilter(service, filtersLeft, paramsLeft);
- }
- function intersectFilters(services, filters, filterParams) {
- return services.filter(service => intersectionFilter(service, filters, filterParams));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement