JSFiddle - React, Tailwind, and code Playground
by Andrey
JavaScript
let sumCalled = 0;
/**
* Memoizes function
* @param {Function} func - Function to memoize
*/
function memoize(func) {
// TODO: Write your code here
const cache = {};
debugger;
const cacheKey = param;
if(cache[cacheKey]){
return cache[cacheKey];
}
const sum = func(param);
cache[cacheKey] = sum;
return sum;
}
function sum(args) {
sumCalled++;
return args.reduce((acc, value, i) => acc + value, 0);
}
const memoizedSum = memoize(sum);
console.log(memoizedSum(1), '=== 1');
console.log(memoizedSum(1, 2));
console.log(memoizedSum(1, 2), '=== 3');
console.log(memoizedSum(1, 3, 10), '=== 14');
console.log(memoizedSum(1, 3, 10), '=== 14');
console.log(memoizedSum(1, 3, 10), '=== 14');
console.log(memoizedSum(1, 3, 10), '=== 14');
console.log(sumCalled === 3);