2015-04-02 62 views
1

可能有人幫助我整理我的文件表,其中存儲在一列格式(數量/年)訂購一列?首先,我需要在今年對它們進行排序,然後一些小訂單的數量(意思是從最新文件到最舊排序順序以及反向順序從最舊到最新)數據表通過解析其價值

輸入數據:

1/15 
3/15 
4/12 
41/12 
30/12 
30/110 
21/02 
128/02 

有序的數據:

30/110 
3/15 
1/15 
41/12 
30/12 
4/12 
128/02 
21/02 

首先,我想使double(year.number)和比較它們,但它會嚴重排序例如。數據,如4/12,30/12因爲(12.30 < 12.4)

我已經創建了小提琴http://jsfiddle.net/N3ckS/64/

THX你

回答

1

取而代之的是單個值解析成一個單一的值進行比較(如雙像你提出的),你可以比較這兩個值一步一步就像你在開始時描述:

比較歲:如果他們是不同的,他們已經給這兩個元素的絕對命令;如果它們是相同的,那麼訂單就由文件編號單獨給出。

你也錯過了多年,文件號碼值解析爲數字,導致他們比較爲字符串。

function compare_x_y (x, y) { 
    var xx = x.split('/'); 
    var x_year = parseInt(xx[1], 10); 
    var x_number = parseInt(xx[0], 10); 
    var yy = y.split('/'); 
    var y_year = parseInt(yy[1], 10); 
    var y_number = parseInt(yy[0], 10); 
    var year_equals = x_year == y_year; 

    return year_equals ? x_number < y_number : x_year < y_year; 
} 

jQuery.fn.dataTableExt.oSort["document-desc"] = function (x, y) { 
     return compare_x_y (x, y) ? 0 : 1; 
}; 

jQuery.fn.dataTableExt.oSort["document-asc"] = function (x, y) { 
     return compare_x_y (x, y) ? 1 : 0;   
}; 

這裏是updated fiddle

+0

謝謝馬可,完美的作品。 – porosman 2015-04-02 18:59:06