Currying is a useful technique used in JavaScript applications.
Please implement a curry() function, which accepts a function and return a curried one.
Good morning! Here's your coding interview problem for today.
This problem was asked by Google.
Currying is a useful technique used in JavaScript applications.
Please implement a curry() function, which accepts a function and return a curried one.
Example
const multiplyThree = (a, b, c) => { return a * b * c; }; const curriedMultiplyThree = curry(multiplyThree); console.log(curriedMultiplyThree(1, 3, 5)); // 15 console.log(curriedMultiplyThree(1, 2)(5)); // 10 console.log(curriedMultiplyThree(1)(2)(3)); // 6 Note: The implementation of curry() is not provided and needs to be completed.
Solution
function curry(fn) { return function curried(...args) { if (fn.length === args.length) { return fn.apply(this, args); } return (...args2) => curried.apply(this, args.concat(args2)); }; } Explanation
- When you call curry() and pass it a function, it returns a new curried() function.
- The first time you call curried() and pass it some arguments, it checks if the number of arguments matches the required arguments for the original function.
- If it does match, it calls the original function with those arguments.
- If it doesn't match, it returns a new function that will accumulate more arguments and call curried() again.
- This continues until enough arguments have been accumulated to call the original function.
Top comments (0)