【问题标题】:Sorting with negative and positive values in Datatable jQuery在Datatable jQuery中使用负值和正值排序
【发布时间】:2015-10-25 09:33:07
【问题描述】:

我需要为包含正数和负数的特定列添加排序功能。

默认情况下,排序按预期工作。但就我而言,我只需要对 正值 进行排序。

列:百分比

值: -1% 16% 2% 12% 0%

预期输出: 升序:2% 12% 16% 0% -1%

降序:16% 12% 2% 0% -1%

任何想法如何进行这样的排序?

【问题讨论】:

    标签: sorting datatables datatables-1.10 columnsorting


    【解决方案1】:

    您需要自己创建一个自定义排序插件。您可以按照以下示例进行操作:

    function ignoreZeroOrBelow(a, b, high) {
        a = parseFloat(a);
        a = a>0 ? a : high;
        b = parseFloat(b);
        b = b>0 ? b : high;
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));    
    }
    jQuery.extend( jQuery.fn.dataTableExt.oSort, {
        "sort-positive-numbers-only-asc": function (a, b) {
            return ignoreZeroOrBelow(a, b, Number.POSITIVE_INFINITY);
        },
        "sort-positive-numbers-only-desc": function (a, b) {
            return ignoreZeroOrBelow(a, b, Number.NEGATIVE_INFINITY)*-1;
        }
    });
    

    用法:

    var dataTable = $('#example').dataTable({
        columnDefs: [
            { type: 'sort-positive-numbers-only', targets : 0 }
        ],
    });
    

    演示 -> http://jsfiddle.net/scuo0t6k/

    插件背后的想法很简单

    1. 提取内容的数值(-1% == -1
    2. 排序时
      • 升序返回Number.POSITIVE_INFINITY如果值
      • 降序返回Number.NEGATIVE_INFINITY如果值

    因此,当您对列进行排序时,仅包含值>0。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      • 2013-05-06
      • 2022-12-04
      • 2020-05-27
      • 1970-01-01
      • 2019-06-30
      相关资源
      最近更新 更多