diff --git a/problems/memoize.js b/problems/memoize.js new file mode 100644 index 0000000..8b26a4b --- /dev/null +++ b/problems/memoize.js @@ -0,0 +1,28 @@ +/** + * @param {Function} fn + */ +function memoize(fn) { + let cache = new Map(); + + return function(...args) { + let key = JSON.stringify(args); + + if (!cache.has(key)) { + cache.set(key, fn(...args)); + } + + return cache.get(key); + } +} + + +/** + * let callCount = 0; + * const memoizedFn = memoize(function (a, b) { + * callCount += 1; + * return a + b; + * }) + * memoizedFn(2, 3) // 5 + * memoizedFn(2, 3) // 5 + * console.log(callCount) // 1 + */