Map
object.function
keyword must be used in order to allow the memoized function to have its this
context changed if necessary.cache
by setting it as a property on the returned function.const memoize = fn => { const cache = new Map(); const cached = function (val) { return cache.has(val) ? cache.get(val) : cache.set(val, fn.call(this, val)) && cache.get(val); }; cached.cache = cache; return cached; };
// See the `anagrams` snippet.
const anagramsCached = memoize(anagrams);
anagramsCached('javascript'); // takes a long time
anagramsCached('javascript'); // returns virtually instantly since it's cached
console.log(anagramsCached.cache); // The cached anagrams map
Subscribe to get resources directly to your inbox. You won't receive any spam! ✌️