কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে অ্যারে এলিমেন্ট পুনর্বিন্যাস করা যেন কোনো দুটি সমান না থাকে


সমস্যা

জাভাস্ক্রিপ্ট ফাংশন যা একটি লিটেরাল অ্যারে (arr) নেবে। এই অ্যারে-এ কিছু ডুপ্লিকেট সন্নিহিতভাবে আছে। ফাংশনটি অ্যারে-এর এলিমেন্টগুলো পুনর্বিন্যাস করবে যেন কোনো দুটি এলিমেন্ট সমান না থাকে। ফাংশনটি পুনর্বিন্যাস করা অ্যারে রিটার্ন করবে, এটি гаран্টি করা আছে যে কমপক্ষে একটি solche arrangement exists।

উদাহরণস্বরূপ, ইনপুট যদি হয় –

const arr = [7, 7, 7, 8, 8, 8];

তবে আউটপুট হবে –

const output = [7, 8, 7, 8, 7, 8];

আউটপুট ব্যাখ্যা:

অন্যান্য সঠিক পুনর্বিন্যাসও সম্ভব।

উদাহরণ

কোডটি নিচের মতো –

const arr = [7, 7, 7, 8, 8, 8]; const rearrangeArray = (arr = []) => { const map = arr.reduce((acc, val) => { acc[val] = (acc[val] || 0) + 1 return acc; }, {}); const keys = Object.keys(map).sort((a, b) => map[a] - map[b]); const res = []; let key = keys.pop(); for(let i = 0; i < arr.length; i += 2){ if(map[key] <= 0){ key = keys.pop(); }; map[key] -= 1; res[i] = Number(key); }; for(let i = 1; i < arr.length; i += 2){ if(map[key] <= 0){ key = keys.pop(); }; map[key] -= 1; res[i] = Number(key); }; return res; }; console.log(rearrangeArray(arr));

আউটপুট

কনসোলে আউটপুট হবে –

[ 8, 7, 8, 7, 8, 7 ]
  1. জাভাস্ক্রিপ্ট Array.isArray() মেথড

  2. জাভাস্ক্রিপ্ট array.flatMap() মেথড

  3. জাভাস্ক্রিপ্ট Array.slice() মেথড

  4. জাভাস্ক্রিপ্ট array.values() মেথড