17 lines
447 B
JavaScript
17 lines
447 B
JavaScript
function memoize(fn, options = {}) {
|
|
const { cache = new Map(), getCacheKey } = options;
|
|
const memoizedFn = function (arg) {
|
|
const key = getCacheKey ? getCacheKey(arg) : arg;
|
|
if (cache.has(key)) {
|
|
return cache.get(key);
|
|
}
|
|
const result = fn.call(this, arg);
|
|
cache.set(key, result);
|
|
return result;
|
|
};
|
|
memoizedFn.cache = cache;
|
|
return memoizedFn;
|
|
}
|
|
|
|
export { memoize };
|