当前位置: 首页 > news >正文

【项目经验】:elementui表格中数字汉字排序问题及字符串方法localeCompare()

一.需求

表格中数字汉字排序,数字按大小排列,汉字按拼音首字母(A-Z)排序。

二.用到的方法

  • 第一步:把el-table-column上加上sortable="custom"

<el-table-column prop="date" label="序号" sortable="custom" width="180">
</el-table-column>

方法详细介绍:

sortable对应列是否可以排序,如果设置为 'custom',则代表用户希望远程排序,需要监听 Table 的 sort-change 事件boolean, stringtrue, false, 'custom'false
  • 第二步:在el-table绑定事件sort-change

<el-table :data="tableData" style="width: 100%" @sort-change="sort_change">

方法详细介绍:

sort-change当表格的排序条件发生变化的时候会触发该事件{ column, prop, order }
  • 第三步:实现功能(代码)

sort_change ({ column, prop, order }) {let fieldname = prop;let sortType = order;if (fieldname == 'date') {// 数字排序this.getNums(fieldname, sortType)}if (fieldname == 'name') {// 汉字首字母排序this.tableData.sort(this.compare(fieldname, sortType));}},// 数字排序getNums (fieldname, sortType) {if (sortType === "ascending") {this.tableData = this.tableData.sort((a, b) => b[fieldname] - a[fieldname]);// console.log(this.tableData);} else if (sortType === "descending") {this.tableData = this.tableData.sort((a, b) => a[fieldname] - b[fieldname]);}},// 汉字首字母排序compare (propertyName, sort) {return function (obj1, obj2) {var value1 = obj1[propertyName];var value2 = obj2[propertyName];if (typeof value1 === "string" && typeof value2 === "string") {const res = value1.localeCompare(value2, 'zh');return sort === "ascending" ? res : -res;} else {if (value1 <= value2) {return sort === "ascending" ? -1 : 1;} else if (value1 > value2) {return sort === "ascending" ? 1 : -1;}}}}

三.字符串方法localeCompare()

概念:localeCompare() 方法用于比较两个字符串,并根据本地排序规则确定这两个字符串的顺序。这可以用于排序,例如在表格中按字母顺序排列行。

语法:string.localeCompare(compareString[, locales[, options]])

参数说明:

compareString:必需。要与调用字符串进行比较的字符串。

locales:可选。一个字符串数组,用于指定一种或多种区域设置代码。

options:可选。一个包含属性的对象,用于控制比较的各方面。

注意事项:

1、localeCompare() 方法是大小写敏感的。例如,"a" 和 "A" 是不同的字符。

2、localeCompare() 方法也是重音符号敏感的。例如,"é" 和 "è" 是不同的字符。

3、localeCompare() 方法的默认区域设置是当前系统的区域设置。

4、localeCompare() 方法返回的数字取决于本地排序规则。不同的语言和不同的区域设置可能会有不同的排序规则。

5、localeCompare() 方法不会更改原始字符串。它只是返回一个数字。

常用场景:汉字排序

四.总结

  1. 这里面相当于用了一个表格自定义排序方法,这个点是我们该考虑的,这里还可以用sort-method。这个方法是需要在每列都加的,我当时做的是动态添加表头的需求,sort-method就不好实现。
  2. 想用sort-change方法来自定义排序方法一定要sortable="custom";如果sortable="true",就代表你使用的默认排序。只有order=null时才会触发你自定义的方法。

http://www.lryc.cn/news/169030.html

相关文章:

  • Spring Boot的运行原理
  • xen-gic初始化流程
  • Docker从认识到实践再到底层原理(六-1)|Docker容器基本介绍+命令详解
  • 【Flink】FlinkCDC自定义反序列化器
  • linux基础(2)
  • docker安装zookeeper(单机版)
  • 国际版阿里云/腾讯云免开户:云存储服务:云存储服务能够让你随时随地拜访和同享文件
  • 【Java】应用层协议HTTP和HTTPS
  • SpringBoot整合Flowable
  • 华为云香港S3云服务器性能测评_99元一年租用价格
  • prompt 视频收集
  • Rust :与C交互
  • 模拟实现C语言--memcpy函数和memmove函数
  • Linux目录
  • 全国职业技能大赛云计算--高职组赛题卷①(私有云)
  • STM32--PWR电源控制
  • vue+element-ui el-descriptions 详情渲染组件二次封装(Vue项目)
  • Nvme 协议第一章节学习
  • 三维模型3DTile格式轻量化压缩处理工具常用几款软件介绍
  • 【工具篇】高级 TypeScript 案例
  • 利用Python将dataframe格式的所有列的数据类型转换为分类数据类型
  • 安全线程的集合
  • 用GoConvey编写单元测试的一些总结
  • Linux Arm64修改页表项属性
  • elasticsearch14-高亮
  • HUAWEI华为MateBook X Pro 2021款 i7 集显(MACHD-WFE9Q)原装出厂Win10系统20H2
  • 21天学会C++:Day9----初识类与对象
  • 【深度学习】 Python 和 NumPy 系列教程(十七):Matplotlib详解:2、3d绘图类型(3)3D条形图(3D Bar Plot)
  • 基于Spring Boot+vue的酒店管理系统
  • Python 通过threading模块实现多线程