समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो दो सरणियों में लेता है, arr1 और arr2 क्रमशः पहले और दूसरे तर्क के रूप में।
फ़ंक्शन को सरणियों के प्रतिच्छेदन (दोनों के बीच सामान्य तत्व) का पता लगाना चाहिए और यदि ऐसे तत्व हैं जो दोनों सरणियों में दो बार दिखाई देते हैं, तो हमें उन्हें अपने परिणाम सरणी में भी दो बार शामिल करना चाहिए।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -
const arr1 = [2, 7, 4, 6, 7, 4]; const arr2 = [7, 1, 9, 7, 4, 5];
तब आउटपुट होना चाहिए -
const output= [7, 7, 4];
उदाहरण
इसके लिए कोड होगा -
const arr1 = [2, 7, 4, 6, 7, 4]; const arr2 = [7, 1, 9, 7, 4, 5]; const intersect = (arr1 = [], arr2 = []) => { const map = {}; arr1.forEach(a => { map[a] = map[a] ? map[a] + 1 : 1; }) const result = []; for(let key of arr2) { if(key in map && map[key] > 0) { result.push(key); map[key]--; } } return result; }; console.log(intersect(arr1, arr2));
कोड स्पष्टीकरण:
हमने जो कदम उठाए वे हैं -
-
प्रत्येक संख्या की घटना को खोजने के लिए पहले सरणी (arr1) के माध्यम से लूप करें। इसमें।
-
दूसरी सरणी (arr12) के माध्यम से लूप करें ताकि पता लगाया जा सके कि arr2 में तत्व मैप किए गए arr1 में मौजूद है या नहीं।
-
यदि यह मौजूद है, तो मैप किए गए num1 में मान घटाएं और परिणाम सरणी में तत्व को पुश करें।
आउटपुट
और कंसोल में आउटपुट होगा -
[7, 7, 4]