mattphillips / deep-object-diff

Deep diffs two objects, including nested structures of arrays and objects, and returns the difference. ❄️
https://www.npmjs.com/package/deep-object-diff
MIT License
1.05k stars 89 forks source link

Fixes bug with difference dates in the same second returning true #12

Closed KamalAman closed 7 years ago

KamalAman commented 7 years ago

When you check if two dates are equal to each other you run the following code:

if ((0, _utils.isDate)(l) || (0, _utils.isDate)(r)) { if (l.toString() == r.toString()) return {}; return r; } The issue here is that new Date(1).toString() === new Date(2).toString() //true which is obviously false.

The issue here is that toString formats the date object into a human readable format which does not take milliseconds into account Mon Sep 28 1998 14:36:22 GMT-0700 (PDT)

What you should be using instead is .valueOf() which converts the date into an epoch time. This is also much more preferment than toStirng: roughly 25x faster in node 7.

coveralls commented 7 years ago

Coverage Status

Coverage remained the same at 100.0% when pulling a591ca6152d305fde008a83c59e1c5181f337f61 on KamalAman:master into 49e6acfd9852814c7ca9d88f2ffb2522a912c4a0 on mattphillips:master.

mattphillips commented 7 years ago

Hey @KamalAman thanks for spotting this and sending a PR with the fix 😄

KamalAman commented 7 years ago

No worries, thanks for accepting so quickly. I would appreciate an update to NPM asap when convenient for you.