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

时间:2013-04-12 23:13:48

标签: javascript jsonp sorting

所以我有一些我在JS中编写的排序代码,但它在按字母顺序排序之前对数字进行排序,我希望它在数字之前按字母顺序排列。这是JSfiddle的实际操作。

    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];
}

}

1 个答案:

答案 0 :(得分:3)

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;
}