সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা দুটি অ্যারে 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) লুপ করে প্রতিটি নম্বরের ঘটনা কাউন্ট করা।
দ্বিতীয় অ্যারে (arr2) লুপ করে এলিমেন্ট arr1-এ আছে কিনা এবং কাউন্ট > ০ কিনা চেক করা।
যদি হয়, তবে কাউন্ট ডিক্রিমেন্ট করে রেজাল্টে পুশ করা।
আউটপুট
কনসোলে আউটপুট:
[7, 7, 4]