LeetCode/js/memoize.js

29 lines
483 B
JavaScript
Raw Normal View History

/**
* @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
*/