在 DataTables API 中排序之前格式化数字

Posted

技术标签:

【中文标题】在 DataTables API 中排序之前格式化数字【英文标题】:format numbers before sort in DataTables API 【发布时间】:2021-10-08 09:05:56 【问题描述】:

我在 DataTables 中有一个列,其中包含一些金额,它们的格式类似于 1,200.00,我想获得该列的最大金额。为了做到这一点,我使用下面的代码,如果我在列中有 22.50、250.00 和 1,200.00,它假设给我 1,200.00 作为最大数量,但它会带回 250.00 作为最大数量.

var maxPrice = table
        .column(2)
        .data()
        .sort(function(a,b)
            return a - b 
        )
        .reverse()[0];

【问题讨论】:

【参考方案1】:

您可以使用datatable api,toArray() 方法。

然后使用JS或者jquery来解析数字并排序。

也可以使用extractContent() 函数来获取文本而不是html

        /**
        * Get Max Price
        */
        function extractContent(s) 
          var span = document.createElement('span');
          span.innerHTML = s;
          return span.textContent || span.innerText;
        ;
        
        var PriceArray = [];
        $( table.column(2).data().toArray() ).each(function( index ) 
            PriceArray.push(extractContent(this).replace(',',''));
        );
        var maxPrice = PriceArray.sort(function(a,b)return a-b).reverse()[0];
        console.log(maxPrice);

【讨论】:

以上是关于在 DataTables API 中排序之前格式化数字的主要内容,如果未能解决你的问题,请参考以下文章

按数据类型而不是来自 AJAX 的格式化字符串对 DataTables 中的列进行排序

DataTables API:由于渲染(在某些元素中插入字符串),数据表无法对整数列进行排序

DataTables 时刻按自定义格式排序

DataTables 对字符串而不是数字进行排序

DataTables 对货币进行排序

使用格式化数据进行渲染,使用 DataTables.net 中的原始数据进行排序