Get the property of the difference between two objects in javascript

milestrong picture milestrong · Oct 25, 2017 · Viewed 13.6k times · Source

Let's say that I have an object which looks like this:

{
  prop1: false,
  prop2: false,
  prop3: false
}

and another object which looks like this:

{
  prop1: false,
  prop2: true,
  prop3: false
}

where the difference is within the prop2 property. Is there any way or library (vanilla preferred though) which will compare the two objects, find the property with the different value, and return the property name (in this case prop2)?

I have tried using the difference and differenceBy functions in lodash to no success. Any help or suggestions will be greatly appreciated!

Answer

Nina Scholz picture Nina Scholz · Oct 25, 2017

You could filter the keys (assuming same keys) by checking the unequal value.

var obj1 = { prop1: false, prop2: false, prop3: false },
    obj2 = { prop1: false, prop2: true, prop3: false },
    difference = Object.keys(obj1).filter(k => obj1[k] !== obj2[k]);
    
console.log(difference);