antd-Table组件列排序

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方法是把中文排在了英文之后,(对于升序来说)。

总结:两种方法用哪种都是可以实现字符串排序的

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
antd Table组件提供了很方便的排序功能,可以通过设置`sorter`属性来实现。 首先在表头中设置`sorter`属性为一个对象,对象中包含两个属性:`compare`和`multiple`。 `compare`属性是一个比较函数,接收两个参数,分别是当前行数据的两个单元格的数据,返回值为`1`或`-1`。当返回值为`1`时表示第一个单元格的数据大于第二个单元格的数据,需要升序排;当返回值为`-1`时表示第二个单元格的数据大于第一个单元格的数据,需要降序排。 `multiple`属性用于支持多排序,当该属性为`true`时,按下`shift`键再点击头可以添加该排序中。 举个例子,假设我们有一个表格数据如下: ```javascript const dataSource = [ { key: '1', name: '张三', age: 23, address: '北京市海淀区', }, { key: '2', name: '李四', age: 25, address: '上海市黄浦区', }, { key: '3', name: '王五', age: 20, address: '广州市天河区', }, ]; ``` 我们可以在表头中设置`sorter`属性来实现对数据的排序,比如按照年龄从小到大排序: ```javascript import { Table } from 'antd'; const columns = [ { title: '姓名', dataIndex: 'name', key: 'name', }, { title: '年龄', dataIndex: 'age', key: 'age', sorter: (a, b) => a.age - b.age, }, { title: '地址', dataIndex: 'address', key: 'address', }, ]; function App() { return <Table dataSource={dataSource} columns={columns} />; } ``` 这样就可以在年龄头点击来实现升序或降序排了。 如果要支持多排序,只需要将`multiple`属性设置为`true`即可: ```javascript import { Table } from 'antd'; const columns = [ { title: '姓名', dataIndex: 'name', key: 'name', }, { title: '年龄', dataIndex: 'age', key: 'age', sorter: { compare: (a, b) => a.age - b.age, multiple: true }, }, { title: '地址', dataIndex: 'address', key: 'address', sorter: { compare: (a, b) => a.address.localeCompare(b.address), multiple: true }, }, ]; function App() { return <Table dataSource={dataSource} columns={columns} />; } ``` 现在我们可以按下`shift`键再点击地址头来实现多排序了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值