JSFiddle - React, Tailwind, and code Playground

by brigand

JavaScript

let last = null;

function realExpensiveWork(arg) {
return Array.from({ length: arg.count }, (x, i) => i);
}

function expensiveWork(arg) {
  if (last && last.arg === arg) {
    return last.result;
  } else {
    last = {
      arg,
      result: realExpensiveWork(arg)
    }
    return last.result;
  }
}


const thing = { count: 10000 /* big object */ };

console.log(expensiveWork(thing) === expensiveWork(thing));