Introdução
Neste laboratório, exploraremos o conceito de memoização em JavaScript. Memoização é uma técnica utilizada para otimizar o desempenho de funções, armazenando em cache os resultados de chamadas de funções dispendiosas e retornando o resultado em cache quando as mesmas entradas ocorrem novamente. Através deste laboratório, aprenderemos como implementar a memoização em JavaScript usando o objeto Map.
Função Memoize
Para começar a codificar, abra o Terminal/SSH e digite node. Esta função retorna a função memoizada (em cache). Aqui estão os passos para usar esta função:
- Instancie um novo objeto
Mappara criar um cache vazio. - Retorne uma função que recebe um único argumento que será fornecido à função memoizada. Antes de executar a função, verifique se a saída para esse valor de entrada específico já está em cache. Se estiver, retorne a saída em cache; caso contrário, armazene-a e retorne-a.
- Use a palavra-chave
functionpara permitir que o contextothisda função memoizada seja alterado, se necessário. - Defina o
cachecomo uma propriedade na função retornada para permitir o acesso a ele.
Aqui está o código que implementa a função memoize:
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;
};
Para ver como esta função funciona, você pode usá-la com a função anagrams. Aqui está um exemplo:
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
Resumo
Parabéns! Você concluiu o laboratório da Função Memoize. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.