数据表通过解析其值来排序一列

时间:2015-04-02 13:35:45

标签: javascript jquery sorting datatables jquery-datatables

是否有人可以帮我订购格式(数量/年)的文件表,这些文件存储在一列中?首先,我需要按年份订购它们,然后按数量订购一些小订单(意味着从最新的文件订购到最旧的订单和从最旧到最新的逆序)

输入数据:

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

首先,我想要制作双倍(year.number)并对它们进行比较,但它会严重排序,例如。数据如4 / 12,30 / 12因为(12.30 <12.4)

我创建了小提琴http://jsfiddle.net/N3ckS/64/

你好

1 个答案:

答案 0 :(得分: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