在 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

更新于: 19-Aug-2020

4K+ 浏览

开启你的 职业生涯

通过完成课程获取认证

开始学习
广告