মান লিয়ে, আমাদের একটি স্ট্রিং লিটারেলের অ্যারে আছে -
const arr = ['1185 Design', '3 D Exhibits', '44Doors', '4Concepts', 'ABC Data', 'acceleration'];
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা এমন একটি অ্যারে গ্রহণ করবে এবং ইন-প্লেস সর্ট করবে।
সর্টিং ফাংশনটি এমন হবে যাতে スペশাল ক্যারেক্টার ও নিউমারেল দিয়ে শুরু হওয়া স্ট্রিংগুলো আগে আসবে। তারপর আলফাবেটিক্যালি স্ট্রিং আসবে এবং যদি দুটি স্ট্রিং একই অক্ষরে শুরু হয় কিন্তু কেস ভিন্ন হয়, তবে ছোট হাতের অক্ষরে শুরু হওয়া স্ট্রিংটি আগে আসবে।
উদাহরণ
const arr = ['1185 Design', '3 D Exhibits', '44Doors', '4Concepts', 'ABC Data', 'acceleration'];
const caseSensitiveSort = (arr = []) => {
const sorter = (a, b) => {
if (a === b){ return 0 };
if (a.charAt(0) === b.charAt(0)){
return sorter(a.slice(1), b.slice(1));
}
if(a.charAt(0).toLowerCase() === b.charAt(0).toLowerCase()){
if(/^[a-z]/.test(a.charAt(0)) && /^[A-Z]/.test(b.charAt(0))){
return -1;
};
if(/^[a-z]/.test(b.charAt(0)) && /^[A-Z]/.test(a.charAt(0))){
return 1;
};
};
return a.localeCompare(b);
};
arr.sort(sorter);
};
caseSensitiveSort(arr);
console.log(arr);
আউটপুট
কনসোলে আউটপুট হবে -
[ '1185 Design', '3 D Exhibits', '44Doors', '4Concepts', 'acceleration', 'ABC Data' ]