MediumPro challengeJavaScriptTypeScript

useMemo Hook

ReactHooksMemoization

Implement useMemo(factory, deps) that:

  • Calls factory() and caches the result.
  • Re-calls factory() only when any dep (compared with Object.is) changes.

solve(steps) runs an expensive computation that records call counts.
Each step has { deps }. Returns total number of factory invocations.

Sample tests

Test #12 unique dep sets
Input: [[{"deps":[1,2]},{"deps":[1,3]},{"deps":[1,3]}]]
Output: 2
Test #2NaN comparison via Object.is
Input: [[{"deps":[null]},{"deps":[null]}]]
Output: 1
Test #3Same deps thrice → 1 call
Input: [[{"deps":[1,2]},{"deps":[1,2]},{"deps":[1,2]}]]
Output: 1
Test #4Different deps each time
Input: [[{"deps":[1]},{"deps":[2]},{"deps":[3]}]]
Output: 3
Test #5No steps
Input: [[]]
Output: 0