DataTables - 1.10 中的非英文字母排序

DataTables - non-english letters sorting in 1.10

如何修复 DataTables 1.10 中非美国字母(如 š,č,ť)的排序?

例如,"š" 类似于 "s",但现在这些字符(以这些字符开头的单词)位于末尾(A-Z 之后)。

DataTables 1.10 版需要它。

这对测试用例、奇数示例、有关您的区域设置和语言的一些信息等确实有帮助。但是,我认为您可以简单地通过在自定义排序插件中使用 localeCompare() 来解决这个问题,指定您的语言环境并且非常重要:将 sensitivity 级别设置为 'accent' :

jQuery.extend( jQuery.fn.dataTableExt.oSort, {
  "locale-compare-asc": function ( a, b ) {
     return a.localeCompare(b, 'da', { sensitivity: 'accent' })
  },
  "locale-compare-desc": function ( a, b ) {
     return b.localeCompare(a, 'da', { sensitivity: 'accent' })
  }
});

用法

var table = $('#example').DataTable({
    columnDefs : [
     { targets: 0, type: 'locale-compare' }
  ]
})  

如前所述,无法确定 - OP 中的信息很少,但理论上在大多数情况下这应该可以完成工作。至少它对我有用。请记住传递有效的 locale 字符串,da(丹麦语)仅用于示例目的。

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

我的解决方案基于https://datatables.net/blog/2017-02-28

在 DataTables 初始化设置字符串比较函数之前。就我而言,它适用于波兰语 (pl)。

let locale = 'pl'
let order = $.fn.dataTable.ext.type.order

delete order['string-pre']
order['string-asc'] = function(a, b) {return a.localeCompare(b, locale)}
order['string-desc'] = function(a, b) {return b.localeCompare(a, locale)}

然后初始化

$('.my-table').dataTable( ... )