problems(js): add “2623. Memoize”
Signed-off-by: Matej Focko <mfocko@redhat.com>
This commit is contained in:
parent
f66cfc3cae
commit
dd5aeef5f6
1 changed files with 28 additions and 0 deletions
28
problems/memoize.js
Normal file
28
problems/memoize.js
Normal file
|
@ -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
|
||||
*/
|
Loading…
Reference in a new issue