আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম এবং একমাত্র আর্গুমেন্ট হিসেবে লিটারেলগুলোর একটি অ্যারে নেবে।
অ্যারেতি অনেক রিপিটিং ভ্যালু থাকতে পারে। আমাদের ফাংশনটি অ্যারেটি সর্ট করবে যাতে যেসব ভ্যালু ইউনিক বা কম ফ্রিকোয়েন্সি আছে সেগুলো বেশি ফ্রিকোয়েন্সি যেসব ভ্যালু আছে তার আগে থাকে।
উদাহরণস্বরূপ:
যদি ইনপুট অ্যারে হয়:
const arr = [4, 7, 3, 5, 5, 4, 7, 9, 2, 1, 5, 7, 5, 5, 9];
তাহলে আউটপুট অ্যারে হবে:
const output = [ 3, 2, 1, 9, 9, 4, 4, 7, 7, 7, 5, 5, 5, 5, 5 ];
উদাহরণ
নিচে কোডটি দেওয়া হলো:
const arr = [4, 7, 3, 5, 5, 4, 7, 9, 2, 1, 5, 7, 5, 5, 9]; const sortByNumbers = (arr = []) => { const map = {}; const res = []; for (let i = 0; i < arr.length; i++) { map[arr[i]] = map[arr[i]] || [0]; map[arr[i]][0]++; map[arr[i]][1] = arr[i]; } const sorted = Object.values(map).sort((a, b) => { if (a[0] === b[0]) { return b[1] - a[1]; } return a[0] - b[0] }); for (let i = 0; i < sorted.length; i++) { const [freq, num] = sorted[i] for (let j = 0; j < freq; j++) { res.push(num); } } return res; }; console.log(sortByNumbers(arr));আউটপুট
কনসোল আউটপুট:
[ 3, 2, 1, 9, 9, 4, 4, 7, 7, 7, 5, 5, 5, 5, 5 ]