Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 使用特殊格式对数据表中的数字进行排序_Jquery_Datatables - Fatal编程技术网

Jquery 使用特殊格式对数据表中的数字进行排序

Jquery 使用特殊格式对数据表中的数字进行排序,jquery,datatables,Jquery,Datatables,因此,在使用数据表时,我想对货币进行格式化,使其显示10亿美元、100万美元和1000万美元,但问题是,在对其进行排序时,它与1亿美元相同,因此如果我有200万美元和1亿美元,200万美元将超过10亿美元,有没有可能使用这样的格式进行排序?您可以更改排序插件以生成以下代码: jQuery.fn.dataTable.ext.type.order['currency-abbr-pre'] = function ( data ) { var matches = data.match( /^\$

因此,在使用数据表时,我想对货币进行格式化,使其显示10亿美元、100万美元和1000万美元,但问题是,在对其进行排序时,它与1亿美元相同,因此如果我有200万美元和1亿美元,200万美元将超过10亿美元,有没有可能使用这样的格式进行排序?

您可以更改排序插件以生成以下代码:

jQuery.fn.dataTable.ext.type.order['currency-abbr-pre'] = function ( data ) {
    var matches = data.match( /^\$(\d+(?:\.\d+)?)\s*([a-z]+)/i );
    var multipliers = {
        k: 1000,
        m: 1000000,
        b: 1000000000
    };

    if (matches) {
        var multiplier = multipliers[matches[2].toLowerCase()];
        return parseFloat( matches[1] ) * multiplier;
    } else {
        return -1;
    };
};

$(document).ready(function (){
    var table = $('#example').DataTable({
        columnDefs: [
            { type: 'currency-abbr', targets: 1 }
        ]    
    });
});
有关代码和演示,请参见。

1B
<td data-sort="1000">1B</td>
<td data-sort="10">10M</td>
10米
我找到了一个更简单的解决方案,我添加了标记数据排序,以便datatables将按该值排序,但感谢您的帮助answer@Janva是的,那也行。我不知道你也有原始价值观。你的意图是好的,但我建议改进答案。比如解释你发布的代码为什么有效。例如,添加一个简单的文本来解释您的推理:“在
数据排序
属性中为排序使用一个单位,并按照用户的格式显示”