Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript의 대소문자 구분 정렬

<시간/>

다음과 같은 문자열 리터럴 배열이 있다고 가정합니다. -

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

우리는 그러한 배열 하나를 받아서 배열을 제자리에 정렬하는 JavaScript 함수를 작성해야 합니다.

정렬 기능은 특수 문자, 숫자로 시작하는 모든 문자열이 먼저 나타나도록 해야 합니다.

그런 다음 문자열이 알파벳 순서로 나타나야 하며 동일한 알파벳으로 시작하지만 대소문자가 다른 두 개의 문자열이 있는 경우 소문자 알파벳으로 시작하는 문자열이 먼저 나타나야 합니다.

예시

이에 대한 코드는 -

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