2015-04-02 58 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