Feat: Added Memoize Func

This commit is contained in:
Damien Chazoule
2021-10-04 13:40:17 +02:00
parent 877ce463c8
commit 028e098b63
2 changed files with 66 additions and 0 deletions

29
Cache/Memoize.js Normal file
View File

@ -0,0 +1,29 @@
/**
* Memoize
* @param {Function} fn
* @returns
*/
export const memoize = (func) => {
// eslint-disable-next-line no-console
console.log(`Creating cache for function '${func.name}'`)
const cache = {}
return (...args) => {
const [arg] = args
if (arg in cache) {
// eslint-disable-next-line no-console
console.log(`Reading cache with argument ${arg}`)
return cache[arg]
}
// eslint-disable-next-line no-console
console.log(`Updating cache with argument ${arg}`)
const result = func(arg)
cache[arg] = result
return result
}
}