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