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

2023-09-17 22:31:17

一.需求

表格中数字汉字排序,数字按大小排列,汉字按拼音首字母(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时才会触发你自定义的方法。

更多推荐

【Vue】上万个字把事件处理讲解的淋漓尽致

hello,我是小索奇,精心制作的Vue系列教程持续更新哈,想要学习&巩固&避坑就一起学习吧~事件处理事件的基本用法重点内容使用v-on:xxx缩写@xxx绑定事件,其中xxx是事件名(回顾:v-bind缩写为冒号:)事件的回调需要配置在methods对象中,最终会在VM上methods中配置的函数,不要用箭头函数,否

Linux网络编程(高并发服务器)

文章目录前言一、什么是高并发服务器二、使用多线程和多进程实现高并发服务器的思路三、多进程服务器代码编写四、多线程服务器代码编写总结前言本篇文章带大家学习Linux网络编程中的高并发服务器。首先我们需要了解什么是高并发服务器,然后是学习如何来编写高并发服务器。一、什么是高并发服务器高并发服务器是指能够同时处理大量并发请求

yamot:一款功能强大的基于Web的服务器安全监控工具

关于yamotyamot是一款功能强大的基于Web的服务器安全监控工具,专为只有少量服务器的小型环境构建。yamot只会占用非常少的资源,并且几乎可以在任何设备上运行。该工具适用于Linux或BSD,当前版本暂不支持Windows平台。比如说,广大研究人员可以使用yamot来监控在家运行的RaspberryPi服务器。

Centos下安装 oracle11g 博客2

[oracle@wangmengyuandatabase]$./runInstaller-silent-responseFile/home/oracle/database/response/db_install.rsp-ignorePrereq./runInstaller-silent-responseFile/hom

HTTPS的工作过程

HTTPS就是对HTTP进行了加密,因为要保证数据安全,就需要进行加密,网络中不再直接传输明文了,而是加密之后的密文,加密的方法有很多,但是整体可以分为两大类:对称加密和非对称加密对称加密对称加密其实就是通过同一个"密钥",把明文加密成密文,并且也能把密文解密成明文,引入对称加密之后,即使数据被截获,由于黑客不知道密钥

MySQL数据库

目录1:数据库概述及数据准备1.1:什么是数据库?什么是数据库管理系统?什么是SQL?他们之间的关系是什么?1.2:在Windows操作系统中,怎么使用命令来启动和关闭MySQL服务呢?1.3:mysql常用命令1.4:数据库中最基本的元素是表:table1.5:SQL的分类1.6:导入演示数据1.7:表结构描述2:常

Ubuntu上安装Docker的步骤和指南

Ubuntu上安装Docker的步骤和指南安装docker简介更新系统安装Docker依赖添加Docker官方GPG密钥添加Docker软件源安装DockerEngine启动Docker服务验证安装查看docker版本卸载docker停止容器卸载Docker软件包删除Docker配置文件和数据删除Docker用户组(可

vue 引入zTree

下载js包解压后找个地方放文件夹内引入import"@/common/zTree/js/jquery-1.4.4.min"import"@/common/zTree/js/jquery.ztree.core.min.js"import"@/common/zTree/js/jquery.ztree.excheck.min

SpringBoot2.0(mybatis-plus初始使用)

目录一,介绍二,SpringBoot2.x整合MybatisPlus+Lombok2.1,添加依赖`pom`2.2,配置数据库信息`application.properties`2.3,工程结构初始化三,创建接口返回统一对象四,创建bean五,创建mapper六,创建service6.1,创建impl七,创建contr

如何在Vue 3项目中使用Jest配置生成测试报告

1.介绍在Vue3项目中使用Jest进行单元测试是一种常见的做法,它可以帮助我们验证代码的正确性和稳定性。而生成测试报告可以帮助我们更好地了解测试覆盖率和测试结果,以便更好地优化和改进我们的代码。本文将介绍如何在Vue3项目中配置Jest,以生成测试报告。2.安装Jest首先,我们需要在Vue3项目中安装Jest。可以

Unity中Shader特性PerRendererData

文章目录前言一、优化前是对使用了相同材质球的不同物体间shader分别设置,比较消耗性能二、使用[PerRendererData]标签,可以在脚本中使用SetPropertyBlock()对使用同一材质球的不同物体进行修改其Shader属性前言Unity中Shader特性PerRendererData一、优化前是对使用

热文推荐