Published
Edited
Jan 5, 2019
Importers
Insert cell
md`# Memoize`
Insert cell
{
const memoizedFactorial = memoize(function factorial (num) {
console.log('Calculate factorial of ', num);
if (num <= 1) return num;
return num * memoizedFactorial(num - 1);
});
console.log(memoizedFactorial(4));
console.log(memoizedFactorial(5));
}
Insert cell
function factorialFactory (mFactorial) {
return function (num) {
if (num <= 1) return num;
return num * mFactorial(num - 1);
};
}
Insert cell
function factorial (num) {
if (num <= 1) return num;
return num * factorial(num - 1);
}
Insert cell
memoize = (fn) => {
let _cache = {};
return (...args) => {
const serializedArgs = serializer(args);
if (_cache[serializedArgs])
return console.log('Return cached result of', serializedArgs) || _cache[serializedArgs];
return _cache[serializedArgs] = fn.apply(null, args);
};
};
Insert cell
serializer = JSON.stringify;
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more