2013-04-12 58 views
2

所以我有一些我在JS中編寫的代碼,但它在按字母順序排序之前對數字進行排序,我希望它在數字之前按字母順序排列。這是它的一個JSfiddle在行動。按照字母順序排序JSON和數字

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

你的代碼是難以閱讀 – Mohsen

回答

2
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; 
} 
+0

完美。謝謝。 – Justin