在 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+ 瀏覽

開啟你的 職業生涯

透過完成課程獲取認證

開始學習
廣告
© . All rights reserved.