Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Sắp xếp phân biệt chữ hoa/thường (Case-sensitive sort) trong JavaScript

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' ]