memoize

by Evgeniy Kvasyuk

JavaScript

const memoize = (func, hashFunc = e => e) => {
  const cache = {};
  return (...props) => {
    const key = hashFunc(...props);
    return cache.hasOwnProperty(key) ? cache[key] : cache[key] = func(...props);
  };
}

const testFunc = (a, b) => {
  console.log('не кеширование');
  return a + b;
}

const memoizedTest = memoize(testFunc);

console.log(memoizedTest(3, 6));
console.log(memoizedTest(3, 6));
console.log(memoizedTest(3, 6));
console.log(memoizedTest(4, 6));