# 排序的字母数字字符串降序 [英] Sort Alphanumeric String Descending

### 问题描述

I need to sort an array of alphanumerical items as follows. From:

``````2 xxx
20 axxx
38 xxxx
20 bx
8540 xxxxxx
``````

``````8540 xxxxx
38 xxxx
20 axxx
20 bx
2 xxx
``````

Thus, sorted descending with respect to the numbers, then ascending alphabetically. The numbers are always separated from the alphabetical characters (denoted "xxxx") by a single space, but the numbers are variable length.

I suspect I need to use some Regex in the sort() function and splitting off the numbers by the space then sorting it, but I don't know how to tie in the alphabetical sorting. Any code samples? Thanks so much!

### 推荐答案

No need for RegEx, because `Array.sort()` accepts custom function:

``````var arr=["2 xxx","20 axxx","38 xxxx","20 bx","8540 xxxxxx"];
arr.sort(function(a,b){
a=a.split(" ");
b=b.split(" ");
var an=parseInt(a[0],10);
var bn=parseInt(b[0],10);
return an<bn?1:(an>bn?-1:(a[1]<b[1]?-1:(a[1]>b[1]?1:0)));
});
console.log(arr);
``````