-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathflow.js
More file actions
23 lines (17 loc) · 852 Bytes
/
Copy pathflow.js
File metadata and controls
23 lines (17 loc) · 852 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*
Write a function that takes an array of functions and a number that will be piped through all those functions. The input number passes through the first function, whose output is passed as input to the second function, whose output is passed as input to the third function, and so on. Use recursion to return the final output of the last function in the array.
function multiplyBy2(num) { return num * 2; }
function add7(num) { return num + 7; }
function modulo4(num) { return num % 4; }
function subtract10(num) { return num - 10; }
const arrayOfFunctions = [multiplyBy2, add7, modulo4, subtract10];
console.log(flow(2, arrayOfFunctions)); // -> -7
*/
function flow(input, funcArray) {
if (funcArray.length === 0) {
return input
};
var output = funcArray[0](input);
funcArray.shift();
return flow(output, funcArray)
};