Solution Review: Club Entry System

This lesson will explain the solution to the problem in the previous lesson.

We'll cover the following...

Solution review #

Press + to interact
const filter = func => arr => arr.filter(func);
const map = func => arr => arr.map(func);
const funcCompose = (...funcs) => args => funcs.reduceRight((arg, fn) => fn(arg), args);
function test(customers){
const ans = funcCompose(
map(x => x.name),
filter(x => x.age >= 18)
)(customers)
return ans
}
const customers = [ { name: "Hermoine", age: 15 },
{ name: "Ron", age: 18 },
{ name: "Harry", age: 24 },]
console.log(test(customers))

Explanation #

You were given two functions, filter and map (lines 1 & 2).

  • filter applies the function, func, on each element of the array, arr, on which it is called.

  • map applies the function, func, on each element of the array, arr, on which it is called.

On line 4, we define our funcCompose function.

const funcCompose = (...funcs) => args => funcs.reduceRight((arg, fn) => fn(arg), args);

It accepts multiple functions, funcs. We use the spread operator here so that it can store any number of functions passed inside of an array. In our case, we are passing two functions, map and filter.

In function composition, the result of one function is passed ...