मान लीजिए, हमारे पास दो JSON ऑब्जेक्ट हैं जैसे -
const obj1 = {a: "apple", b: "banana", c: "carrot"};
const obj2 = {a: "apple", e: "egg", b: "banana", c: "carrot", d: "dog"};
हमें एक JavaScript फ़ंक्शन लिखना है जो ऐसे दो ऑब्जेक्ट लेता है। हम दोनों ऑब्जेक्ट में से किसी से भी डेटा हटाए बिना दो ऑब्जेक्ट की तुलना करने के लिए एक बूलियन जांच करना चाहते हैं।
उदाहरण के लिए, यदि मैं उपरोक्त डेटा का उपयोग करता, तो बूलियन जांच को true लौटाना चाहिए क्योंकि दोनों ऑब्जेक्ट में मौजूद कुंजियों के मान मेल खाते हैं।
हालांकि, मान लीजिए obj1 वही रहता है लेकिन obj2 निम्नलिखित है -
const obj1 = {a: "apple", b: "banana", c: "carrot"}
const obj2 = {a: "ant", e: "egg", b: "banana", c: "carrot", d: "dog"}
इस डेटा के साथ, यह false लौटाना चाहिए क्योंकि एक कुंजी का मान मेल नहीं खाता भले ही अन्य फ़ील्ड मेल खाते हों और कुछ फ़ील्ड दोनों ऑब्जेक्ट में मौजूद न हों।
उदाहरण
इसके लिए कोड होगा -
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