获取JavaScript中两个对象之间差异的属性

假设,我们给了两个对象,它们具有相似的键值对,两个对象中的一个或键值不同。我们的工作是编写一个函数,该函数接受两个对象作为参数,并返回发现具有不同值的第一个键。如果所有键的值完全相同,则应返回-1。

这是示例对象-

const obj1 = {
   name: 'Rahul Sharma',
   id: '12342fe4554ggf',
   isEmployed: true,
   age: 45,
   salary: 190000,
   job: 'Full Stack Developer',
   employedSince: 2005
}
const obj2 = {
   name: 'Rahul Sharma',
   id: '12342fe4554ggf',
   isEmployed: true,
   age: 45,
   salary: 19000,
   job: 'Full Stack Developer',
   employedSince: 2005
}

我们将接收两个对象,使用forEach()循环遍历第一个对象,检查两个对象是否相等,如果任何时候的值都不匹配,我们将更新一个标志,退出循环并返回特定的键。如果我们遍历整个循环,则意味着所有内容都匹配,在这种情况下,我们将返回-1。

完整的代码将是-

示例

const obj1 = {
   name: 'Rahul Sharma',
   id: '12342fe4554ggf',
   isEmployed: true,
   age: 45,
   salary: 190000,
   job: 'Full Stack Developer',
   employedSince: 2005
}
const obj2 = {
   name: 'Rahul Sharma',
   id: '12342fe4554ggf',
   isEmployed: true,
   age: 45,
   salary: 19000,
   job: 'Full Stack Developer',
   employedSince: 2005
}
const difference = (obj1, obj2) => {
   let keyFound = false;
   Object.keys(obj1).forEach(key => {
      if(obj1[key] !== obj2[key]){
         return keyFound = key;
      }
   });
   return keyFound || -1;
};
console.log(difference(obj1, obj2));

输出结果

控制台中的输出将为-

salary