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

เปรียบเทียบคีย์และค่าในวัตถุ JSON เมื่อวัตถุหนึ่งมีคีย์พิเศษใน JavaScript


สมมติว่า เรามีวัตถุ JSON สองอย่างนี้ −

const obj1 = {a: "apple", b: "banana", c: "carrot"};
const obj2 = {a: "apple", e: "egg", b: "banana", c: "carrot", d: "dog"};

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับวัตถุสองอย่างดังกล่าว เราต้องการให้มีการตรวจสอบแบบบูลีนเปรียบเทียบวัตถุทั้งสองโดยไม่ต้องลบข้อมูลออกจากวัตถุใดวัตถุหนึ่ง

ตัวอย่างเช่น หากฉันต้องการใช้ข้อมูลข้างต้น การตรวจสอบบูลีนควรคืนค่าเป็น "จริง" เนื่องจากค่าของคีย์ที่อยู่ในวัตถุทั้งสองตรงกัน

อย่างไรก็ตาม สมมติว่า obj1 ยังคงเหมือนเดิม แต่ obj2 มีดังต่อไปนี้ -

const obj1 = {a: "apple", b: "banana", c: "carrot"}
const obj2 = {a: "ant", e: "egg", b: "banana", c: "carrot", d: "dog"}

ด้วยข้อมูลนี้ ค่าควรคืนค่าเท็จเนื่องจากค่าของคีย์ไม่ตรงกันแม้ว่าฟิลด์อื่นจะตรงกันและบางฟิลด์ไม่มีอยู่ในทั้งสองออบเจ็กต์

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

const obj1 = {
   a: "apple",
   b: "banana",
   c: "carrot"
}
const obj2 = {
   a: "apple",
   b: "banana",
   c: "carrot",
   d: "dog",
   e: "egg"
}
const obj3 = {a: "apple", b: "banana", c: "carrot"}
const obj4 = {a: "ant", e: "egg" ,b: "banana", c: "carrot", d: "dog"}
function checkEquality(a, b) {
   const entries1 = Object.entries(a);
   const entries2 = Object.entries(b);
   const short = entries1.length > entries2 ? entries2 : entries1;
   const long = short === entries1 ? b : a;
   const isEqual = short.every(([k, v]) => long[k] === v);
   return isEqual;
}
console.log(checkEquality(obj1, obj2))
console.log(checkEquality(obj3, obj4))

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

true
false