deep-object-diff icon indicating copy to clipboard operation
deep-object-diff copied to clipboard

Proposal: Add an 'areSame' flag.

Open dwjohnston opened this issue 5 years ago • 1 comments

basically, each diff type can have an additional flag, areSame, which is set true if the objects are the same.

This functionality can be achieved with this:

const result = detailedDiff(oldItem, newItem); 
const areSame = Object.values(result).reduce((acc, cur) => {
        return acc && Object.values(cur).length === 0
    }, true); 

dwjohnston avatar Nov 27 '19 03:11 dwjohnston

Simpler workaround:

const result = detailedDiff(oldItem, newItem); 
const areSame = Object.values(result)
    .every((obj) => Object.keys(obj).length === 0);

I like this idea. The internals could determine this basically for free (just updating a variable in a loop that already exists). Externally, it's more expensive to call Object.values and Object.keys like this on large objects.

Going further: Rather than a boolean areSame, make it an integer total that is 0 if the objects are the same, and +1 for every change, of any type. It's as cheap to calculate (update a variable in a loop that already exists), but gives more information.

anko avatar Nov 30 '19 15:11 anko