Computer >> Máy Tính >  >> Lập trình >> Javascript

Sắp xếp phân biệt chữ hoa chữ thường trong JavaScript

Giả sử, chúng ta có một mảng các ký tự chuỗi như thế này -

const arr = ['1185 Design','3 D Exhibits','44Doors', '4Concepts','ABC Data','acceleration'];

Chúng tôi được yêu cầu viết một hàm JavaScript nhận trong một mảng như vậy và sắp xếp mảng ở vị trí.

Hàm sắp xếp phải sao cho tất cả các chuỗi bắt đầu bằng các ký tự đặc biệt, chữ số xuất hiện đầu tiên.

Sau đó, các chuỗi đó sẽ xuất hiện theo thứ tự bảng chữ cái và nếu chúng ta có hai chuỗi bắt đầu bằng cùng một bảng chữ cái nhưng các trường hợp khác nhau, thì chuỗi bắt đầu bằng bảng chữ cái thường sẽ xuất hiện đầu tiên.

Ví dụ

Mã cho điều này sẽ là -

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);

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[
   '1185 Design',
   '3 D Exhibits',
   '44Doors',
   '4Concepts',
   'acceleration',
   'ABC Data'
]