ধরুন, আমাদের কাছে এই −
এর মত সংখ্যার একটি অ্যারে আছেconst arr = [1, 6, 3, 1, 3, 1, 6, 3];
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম এবং একমাত্র আর্গুমেন্টের মতো একটি অ্যারে নেয়। তারপরে ফাংশনটি অ্যারেতে এমন সমস্ত সংখ্যার সন্ধান করা উচিত যা বিজোড় সংখ্যক বার প্রদর্শিত হয় (শুধুমাত্র একবার ব্যতীত)।
উদাহরণস্বরূপ,
উপরের অ্যারেতে, সংখ্যা 1 এবং 3 উভয়ই 3 বার (বিজোড়) জন্য প্রদর্শিত হবে, তাই আমাদের ফাংশনটি এই উভয় সংখ্যার তৃতীয় ঘটনাটি সরিয়ে দেবে।
এবং আউটপুট অ্যারে −
এর মত হওয়া উচিতconst output = [1, 6, 3, 1, 3, 6];
আমরা প্রতিটি সংখ্যার ঘটনার ট্র্যাক রাখার জন্য একটি হ্যাশম্যাপ প্রস্তুত করব, এবং শেষ পর্যন্ত বিজোড় সংখ্যক বার প্রদর্শিত সেই সংখ্যাটির শেষ ঘটনাটি মুছে ফেলার জন্য আমরা মানচিত্রের উপর পুনরাবৃত্তি করব৷
আমাদের মানচিত্রের প্রতিটি কী একটি অ্যারের মান ধারণ করবে, যার প্রথম উপাদানটি সেই উপাদানটি কতবার উপস্থিত হয়েছে তার সংখ্যা হবে এবং দ্বিতীয়টি হবে শেষ সূচক যেখানে এটি উপস্থিত হয়েছে৷
উদাহরণ
এর জন্য কোড হবে −
const arr = [1, 6, 3, 1, 3, 1, 6, 3]; const removeOddOccurence = (arr =[]) => { // keeping the original array unaltered const copy = arr.slice(); const map = {}; arr.forEach((num, ind) => { if(map.hasOwnProperty(num)){ map[num][0]++; map[num][1] = ind; }else{ map[num] = [1, ind]; }; }); for(const key in map){ const [freq, index] = map[key]; if(freq !== 1 && freq % 2 === 1){ copy.splice(index, 1, ''); }; }; return copy.filter(el => el !== ''); }; console.log(removeOddOccurence(arr));
আউটপুট
এবং কনসোলে আউটপুট হবে −
[1, 6, 3, 1, 3, 6]