自然排序

使用自然排序对混合了数字和字母的数据进行排序。

  • 作者:艾伦·贾丁
  • 所需项:DataTables 2+

数据通常可能为数字和字母的复杂混合(文件名就是常见示例),使用自然方式对这些数据进行排序是一个相当困难的问题。

幸运的是,Javascript localeCompare 方法目前得到广泛支持,可提供一个可与 DataTables 一起使用的自然排序方法。

使用方法

此插件有许多可获取和使用的方式。

浏览器

可在 DataTables CDN 上使用此插件

JS

随后,该插件将自动注册到全局 DataTables 实例。如果您使用 Require.js 等 AMD 加载器,也可以使用该文件。

请注意,如果您使用多个插件,那么将插件合并成一个文件并在您自己的服务器上托管该文件而不是向 DataTables CDN 发出多个请求, 将有益于提升性能。

NPM

所有插件都可以在 NPM 上使用(还可与 Yarn 或任何其他 Javascript 包管理器一起使用),作为datatables.net-plugins 软件包的一部分。要使用此插件,请先安装插件包

npm install datatables.net-plugins

ES 模块

然后,如果您使用 ES 模块,请导入 datatables.net、所需的任何其他 DataTables 扩展以及该插件

import DataTable from 'datatables.net';
import 'datatables.net-plugins/sorting/natural.mjs';

CommonJS

如果您为 Node 使用 CommonJS 加载器(例如,与旧版 Webpack 或非模块化 Node 代码一起使用),请使用以下方法require插件

var $ = require('jquery');
var DataTable = require('datatables.net');
require('datatables.net-plugins/sorting/natural.js');

示例

// Natural sorting
 new DataTable('#myTable',
     columnDefs: [
         { type: 'natural', target: 0 }
     ]
 } );
// Html can be stripped from sorting by using 'natural-nohtml' such as
 new DataTable('#myTable',
     columnDefs: [
         { type: 'natural-nohtml', target: 0 }
     ]
  } );
// Case insensitive natural sorting
 new DataTable('#myTable',
     columnDefs: [
         { type: 'natural-ci', target: 0 }
     ]
  } );

版本控制

如果您有任何提升此插件的想法或发现任何有错误的地方,请在 GitHub 上提供,非常欢迎提交 Pull Request!