मान लीजिए हमारे पास दो ऑब्जेक्ट हैं:
const a = {
Make: "Apple",
Model: "iPad",
hasScreen: "yes",
Review: "Great product!",
};
const b = {
Make: "Apple",
Model: "iPad",
waterResistant: false
};
हमें एक फ़ंक्शन लिखना है जो ऑब्जेक्ट में सामान्य गुणों की संख्या गिनता है (सामान्य गुण से हमारा मतलब है कुंजी और मान दोनों समान होना) और 0 और 100 (दोनों समावेशी) के बीच एक संख्या लौटाता है जो ऑब्जेक्ट के बीच समानता का प्रतिशत दर्शाता है। जैसे यदि कोई कुंजी/मान जोड़ी मेल नहीं खाती तो यह 0 होगा, यदि सभी मेल खाते हैं तो 100 होगा।
समानता का प्रतिशत गिनने के लिए हम बस समान गुण की गिनती को छोटे ऑब्जेक्ट (जिसमें कम कुंजी/मान जोड़े हैं) में गुणों की संख्या से विभाजित कर सकते हैं और इस परिणाम को 100 से गुणा कर सकते हैं।
इसे समझने के बाद, अब आइए इस फ़ंक्शन के लिए कोड लिखते हैं:
उदाहरण
const a = {
Make: "Apple",
Model: "iPad",
hasScreen: "yes",
Review: "Great product!",
};
const b = {
Make: "Apple",
Model: "iPad",
waterResistant: false
};
const findSimilarity = (first, second) => {
const firstLength = Object.keys(first).length;
const secondLength = Object.keys(second).length;
const smaller = firstLength < secondLength ? first : second;
const greater = smaller === first ? second : first;
const count = Object.keys(smaller).reduce((acc, val) => {
if (Object.keys(greater).includes(val)) {
if (greater[val] === smaller[val]) {
return ++acc;
}
}
return acc;
}, 0);
return (count / Math.min(firstLength, secondLength)) * 100;
};
console.log(findSimilarity(a, b));
आउटपुट
कंसोल में आउटपुट होगा:
66.66666666666666
क्योंकि छोटे ऑब्जेक्ट में 3 गुण हैं जिनमें से 2 सामान्य हैं जो लगभग 66% होता है।