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