Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.90 KB | None | 0 0
  1. function intersectionFilter(service, filters, filterParams) {
  2. if (!Array.isArray(filters) || !Array.isArray(filterParams))
  3. throw new Error('Filters and params must be arrays');
  4.  
  5. if (filters.length !== filterParams.length)
  6. throw new Error('Must provide as much filters as params');
  7.  
  8. if (filters.length < 2) throw new Error('Must provide at least two filters and filter params');
  9.  
  10. if (filters.length === 2) {
  11. const [filter, lastFilter] = filters;
  12. const [param, lastParam] = filterParams;
  13.  
  14. return filter(service, param) && lastFilter(service, lastParam);
  15. }
  16.  
  17. const [filter, ...filtersLeft] = filters;
  18. const [param, ...paramsLeft] = filterParams;
  19. return filter(service, param) && intersectionFilter(service, filtersLeft, paramsLeft);
  20. }
  21.  
  22. function intersectFilters(services, filters, filterParams) {
  23. return services.filter(service => intersectionFilter(service, filters, filterParams));
  24. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement