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