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