সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম এবং একমাত্র আর্গুমেন্ট হিসাবে সংখ্যার একটি অ্যারে নেয়।
অ্যারে অ্যারে, কিছু সদৃশ থাকতে পারে। আমাদের ফাংশনটি এমনভাবে অ্যারেকে সাজাতে বলে মনে করা হয় যাতে যে উপাদানগুলি কমপক্ষে সংখ্যক বার প্রদর্শিত হয় সেগুলি প্রথমে ক্রমবর্ধমান ফ্রিকোয়েন্সিতে উপাদানগুলির দ্বারা অনুসরণ করা হয়৷
যদি অ্যারেতে একই সংখ্যার জন্য দুটি উপাদান উপস্থিত হয় তবে তাদের ক্রমবর্ধমান ক্রমে স্থাপন করা উচিত।
উদাহরণস্বরূপ, যদি ফাংশনে ইনপুট হয়
ইনপুট
const arr = [5, 4, 5, 4, 2, 1, 12];
আউটপুট
const output = [1, 2, 12, 4, 4, 5, 5];
আউটপুট ব্যাখ্যা
সংখ্যা 1, 2 এবং 12 সবগুলি একবার প্রদর্শিত হয় তাই ক্রমবর্ধমান ক্রমে সাজানো হয় এবং তারপর 4 এবং 5 উভয়ই দুবার প্রদর্শিত হয়৷
উদাহরণ
নিম্নলিখিত কোড -
const arr = [5, 4, 5, 4, 2, 1, 12]; const sortByAppearance = (arr = []) => { arr.sort((a, b) => a - b); const res = []; const searched = {}; const countAppearance = (list, target) => { searched[target] = true; let count = 0; let index = list.indexOf(target); while(index !== -1){ count++; list.splice(index, 1); index = list.indexOf(target); }; return count; }; const map = []; arr.forEach(el => { if(!searched.hasOwnProperty(el)){ map.push([el, countAppearance(arr.slice(), el)]); }; }); map.sort((a, b) => a[1] - b[1]); map.forEach(([num, freq]) => { while(freq){ res.push(num); freq--; } }); return res; }; console.log(sortByAppearance(arr));
আউটপুট
[1, 2, 12, 4, 4, 5, 5]