I like the zipWith tail trick, I'll have to remember that for code golf.
Good catch, fixed.
This comment is hidden because it contains spoiler information about the solution
Does the ECMAScript standard guarantee that JSON.stringify(obj1) == JSON.stringify(obj2) iff obj1 === obj2? I'm imagining something like, an array-like object and a proper Array might stringify to the same JSON string, which could cause problems.
JSON.stringify(obj1) == JSON.stringify(obj2)
obj1 === obj2
That might qualify as breaking stuff just to be antagonistic though.