在数字之前使用JavaScript按字母顺序对JSON排序

在数字之前使用JavaScript按字母顺序对JSON排序,javascript,jsonp,sorting,Javascript,Jsonp,Sorting,我有一些我用JS写的排序代码,但它在字母之前排序数字,我希望它在数字之前排序字母。下面是一个正在运行的示例 var sort_by = function(field, reverse, primer){ var key = function(x) {return primer ? primer(x[field]) : x[field]}; return function(a,b) { var A = key(a), B = key(b); return ((A <

我有一些我用JS写的排序代码,但它在字母之前排序数字,我希望它在数字之前排序字母。下面是一个正在运行的示例

    var sort_by = function(field, reverse, primer){
var key = function(x) {return primer ? primer(x[field]) : x[field]};
return function(a,b) {
    var A = key(a), B = key(b);
    return ((A < B) ? -1 : (A > B) ? +1 : 0) * [-1,1][+!!reverse];
}
var sort_by=函数(字段、反向、初级){
var key=function(x){returnprimer?primer(x[field]):x[field]};
返回函数(a,b){
变量A=键(A),B=键(B);
返回((AB)?+1:0)*[-1,1][+!!反向];
}
}

var sort\u by=函数(字段、反向、初级){
var key=function(x){returnprimer?primer(x[field]):x[field]};
var isNotNumber=函数(x){try{return isNaN(x.substr(0,1));}catch(e){return false;}
var分拣机=功能(a、b){
变量A=键(A),B=键(B);
如果(!isNotNumber(A)和&isNotNumber(B))返回-1;
如果(isNotNumber(A)&&!isNotNumber(B))返回+1;
返回((AB)?+1:0)*[-1,1][+!!反向];
}
返回分拣机;
}

您的代码很难阅读
var sort_by = function(field, reverse, primer){
    var key = function(x) {return primer ? primer(x[field]) : x[field]};
    var isNotNumber = function (x) { try {return isNaN(x.substr(0,1)); }catch(e){return false    ;}}
    var sorter = function(a,b) {
        var A = key(a), B = key(b);
        if ( !isNotNumber(A) && isNotNumber(B)) return -1;
        if ( isNotNumber(A) && !isNotNumber(B)) return +1;
        return ((A < B) ? -1 : (A > B) ? +1 : 0) * [-1,1][+!!reverse];
    }
    return sorter;
}