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);