Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

รับคุณสมบัติของความแตกต่างระหว่างสองวัตถุใน JavaScript


สมมติว่าเราได้รับสองอ็อบเจ็กต์ที่มีคู่ค่าคีย์ที่คล้ายกันกับหนึ่งหรือคีย์ที่มีค่าต่างกันในทั้งสองอ็อบเจ็กต์ งานของเราคือการเขียนฟังก์ชันที่รับค่า asargument ของอ็อบเจ็กต์ทั้งสองและส่งกลับคีย์แรกที่พบว่ามีค่าต่างกัน หากคีย์ทั้งหมดมีค่าเหมือนกันทุกประการ ควรคืนค่า -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