[Solved] JavaScript: Comparing two objects


Try with Array#reduce .

Updated with all key pair match

  • Validate the edited array id value is available in original array using Array#map and indexOf function
  • If not push entire object to new array
  • First recreate the original array to object format like {key:[value]}
  • Then match each key value pair match or not with forEach inside the reduce function
var original = [{id: "A1", name: "Nick", age: 20, country: 'JP'}];
var edited = [{name: "Mike", age: 30, country: 'US'},{id: "A1", name: "Nick", age: 25, country: 'US'}];

var ids_org = Object.keys(original[0]).reduce((a,b,c)=> (a[b]=original.map(a=> a[b]),a),{});

var res = edited.reduce((a, b) => {
  if (b.id) {
      Object.keys(b).forEach(i=>{
      if(ids_org[i].indexOf(b[i]) > -1 && i != 'id')
         delete b[i];
      })
     a.push(b);
  } else {
    a.push(b);
  }
  return a;
}, []);

console.log(res)

4

solved JavaScript: Comparing two objects