Table组件排序需要在列的数组中加入,sort属性,然后进行升序降序排序操作,官网上的例子显示的是数组或者长度,只要比较大小即可,如果需要字符串首字母之类的需要如下方法:
1)localeCompare
代码中这样实现:
{
title: '用户名',
dataIndex: 'name',
sorter: (a: any, b: any) => a.name.localeCompare(b.name),
render: (item: any) => item || '---'
}
这种方式会按照 特殊字符-数字-中文-字母的顺序进行排列(升序,降序反之即可),如图所示:
2.charCodeAt
这里我们记住两点,第一个这是一种编码格式UTF-16,且接收的是字符串,返回的是一个数字,这样我们就可以进行比较了,代码如下:
(a: any, b: any) => a.name.slice(0,1).charCodeAt(0)-b.name.slice(0,1).charCodeAt(0)
实现效果和localeCompare方法稍有区别:localeCompare是将中文排在了英文之前,而charCodeAt方法是把中文排在了英文之后,(对于升序来说)。
总结:两种方法用哪种都是可以实现字符串排序的