Implement deepEqual(a, b)
The function behind every toEqual-style test matcher (including this very platform's, see harness-core.js if you're curious). Write deepEqual(a, b) that returns true if two values are structurally equal:
- Primitives compare with
===. - Arrays are equal if same length and every element is deep-equal, in order.
- Plain objects are equal if they have the same set of keys and every value is deep-equal, key order doesn't matter.
deepEqual({ a: 1, b: 2 }, { b: 2, a: 1 }); // true, key order doesn't matter
deepEqual([1, [2, 3]], [1, [2, 3]]); // true
deepEqual([1, 2], [2, 1]); // false, array order matters