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