EasyPro challengeJavaScriptTypeScript
depsChanged — useEffect Deps
ReactHooksEquality
React's useEffect re-runs the effect when any dependency changes. The
comparison uses `Object.is` (not ===) for each element.
Implement solve(prevDeps, nextDeps):
- If
prevDepsisnull(first render), returntrue. - If arrays have different lengths, throw
'Deps length mismatch'. - Return
trueif any element changed (usingObject.is),falseotherwise.
solve(null, [1, 'a']) // true (first render)
solve([1, 'a'], [1, 'a']) // false
solve([1, NaN], [1, NaN]) // false (Object.is(NaN, NaN) === true)Sample tests
Test #1First render → always true
Input: [null,[1,"a"]]
Output: true
Test #2Same deps → false
Input: [[1,"a"],[1,"a"]]
Output: false
Test #3One dep changed → true
Input: [[1,"a"],[1,"b"]]
Output: true
Test #4NaN === NaN via Object.is → false
Input: [[1,null],[1,null]]
Output: false
Test #5Object.is(0, -0) is false → deps changed
Input: [[0],[0]]
Output: true