TaskDefine deepEqual(a, b) using JSON.stringify. Define assertDeepEqual(actual, expected, msg). Test: assertDeepEqual({a:1,b:2}, {a:1,b:2}, 'objects equal'); assertDeepEqual([1,[2,3]], [1,[2,3]], 'nested arrays'); try assertDeepEqual([1,2], [2,1], 'order') in try/catch and log err.message.
Deep equality for objects and arrays
100 XP8 min
Theory
=== doesn't work on objects
{a:1} === {a:1} is false β === compares references, not contents. For tests, you need value equality.
function deepEqual(a, b) {
return JSON.stringify(a) === JSON.stringify(b);
}
deepEqual({ a: 1 }, { a: 1 }); // true
deepEqual([1, 2], [1, 2]); // true
deepEqual([1, 2], [2, 1]); // false β order mattersThe JSON.stringify trick
- Fast and short.
- Handles nested objects/arrays.
- Two limitations: doesn't handle Map/Set/Date well, and
undefinedvalues become absent keys.
For 90% of test cases this is enough. node:test's t.assert.deepStrictEqual is more rigorous (handles Map/Set, distinguishes undefined from missing) but the same idea.
π
Sign up to start coding
Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial β card required, cancel anytime.
Sign up β free trial βFirst 10 lessons in each track are free. No card needed for those.