Cho mảng chuỗi:
const arr = ['1185 Design','3 D Exhibits','44Doors', '4Concepts','ABC Data','acceleration'];
Viết hàm sắp xếp in-place: ký tự đặc biệt/số trước, rồi theo bảng chữ cái, chữ thường trước chữ hoa nếu cùng chữ cái đầu.
Ví dụ
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);Kết quả
Kết quả in ra console:
[ '1185 Design', '3 D Exhibits', '44Doors', '4Concepts', 'acceleration', 'ABC Data' ]