সমস্যা বিবরণ
মিক্সড অ্যারে সর্ট করতে হবে: প্রথম অ্যালফাবেটিক্যালি, তারপর নম্বর অনুযায়ী।
ইনপুট:
const arr = ['Ab-1', 'Ab-11', 'Ab-12', 'ab-10', 'ab-100', 'ab-101', 'ab2', 'ab-3', 'ab-105'];
সমাধান
const arr = ['Ab-1', 'Ab-11', 'Ab-12', 'ab-10', 'ab-100', 'ab-101', 'ab2', 'ab-3', 'ab-105'];
const alphaNumericSort = (arr = []) => {
arr.sort((a, b) => {
const aPart = a.split('-');
const bPart = b.split('-');
return aPart[0].toLowerCase().localeCompare(bPart[0].toLowerCase()) || aPart[1] - bPart[1];
});
};
alphaNumericSort(arr);
console.log(arr);
আউটপুট
[ 'Ab-1', 'ab-2', 'ab-3', 'ab-10', 'Ab-11', 'Ab-12', 'ab-100', 'ab-101', 'ab-105' ]
ব্যাখ্যা
split('-')দিয়ে প্রিফিক্স এবং নম্বর পৃথক করা।localeCompareদিয়ে কেস-ইনসেনসিটিভ স্ট্রিং তুলনা।- যদি প্রিফিক্স সমান হয়, তবে নম্বর তুলনা (
aPart[1] - bPart[1])।