elementPlus下拉框实现自定义模糊查询且100%匹配的优先展示

 效果:

我们可以看到,本来创建时间在创建人之上,但经过我们搜索创建进行匹配度排序后,创建人的匹配度更高,因此搜索之后,创建人就会显示在创建时间之上。

当然如果100%匹配的同样会优先展示在最上面。

第一步:

 (1)加入模糊查询属性 filterable(2) 写入自定义模糊查询方法 :filter-method="(v:any)=>filterTargetTable(v)"

第二步:

  写过滤逻辑

// 过滤设置,100%过滤优先展示
const filterTargetTable = (v: any) => {// 先对查询后匹配度高的进行排序targetTable.value.fields = queryAndSort(v, targetTableCopy.value.fields);// 排序后过滤targetTable.value.fields = targetTable.value.fields.filter((aa: any) => {return aa.score !== -1;});
};
/*** 返回目标数组根据匹配度由高到低排序后的新数组* @date 2024-1-16* @param query:传入查询的内容* @param arr:传入目标数组* @return arr:排序后的新数组*/
const queryAndSort = (query: string, data: any) => {// 对数据源中每个元素进行匹配度计算,并存入新数组matchesvar matches = [];for (var i = 0; i < data.length; i++) {var item = data[i];// 判断当前项与查询字符串的匹配程度if (item.showLabel.includes(query)) {matches.push({ ...item, score: calculateScore(item.showLabel, query) });} else {matches.push({ ...item, score: -1 });}}// 根据匹配度降序排列结果matches.sort((a, b) => b.score - a.score);return matches;
};
/*** 计算两个字符串之间的相似度分值* @date 2024-1-16* @param sourceStr:传入源字符串* @param queryStr: 传入要查询的字符串* @return 返回匹配度的分数*/
function calculateScore(sourceStr: any, queryStr: any) {var sourceLen = sourceStr.length;var queryLen = queryStr.length;var maxLen = Math.max(sourceLen, queryLen);var count = 0;for (var i = 0; i < sourceLen && i < queryLen; i++) {if (sourceStr[i] === queryStr[i]) {count++;}}return (count / maxLen) * 100;
}

 这样就可以实现了。 

 里面只需要修改对应的参数即可。有问题评论区见哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/627586.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

11.1 pcl_ros的点云学习

本文是看了两个博主的内容&#xff0c;整理在这里是为了以后用时方便查找&#xff0c;更容易理解。引用的博文路径如下&#xff1a; ROS入门——PCL激光雷达点云处理&#xff08;1&#xff09;_pcl::torosmsg-CSDN博客 以下功能的实现是我在ubuntu20.04的环境下&#xff0c;搭…

如何制作一本电子版时尚杂志

​随着数字媒体的崛起&#xff0c;电子版时尚杂志已成为一种新的时尚风向标。然而&#xff0c;如何制作一本独具特色的电子版时尚杂志&#xff0c;却让许多初涉此领域的品牌和设计师感到困惑。教你一些方法&#xff0c;制作一本电子版时尚杂志。 一、明确目标与定位 首先&…

C语言调试大作战:与VS编译器共舞,上演一场“捉虫记”的艺术与科学

少年们好&#xff0c;我是博主那一脸阳光&#xff0c;我们接下来介绍C语言的调试和bug的分享。 引言&#xff1a; “如果你曾经在深夜与一串神秘莫测的C代码狭路相逢&#xff0c;彼此瞪大眼睛&#xff0c;犹如牛仔对决般紧张刺激&#xff1b;或者你曾试图驯服一段狂野不羁的循环…

【小黑嵌入式系统第十五课】μC/OS-III程序设计基础(四)——消息队列(工作方式数据通信生产者消费者模型)、动态内存管理、定时器管理

上一课&#xff1a; 【小黑嵌入式系统第十四课】μC/OS-III程序设计基础&#xff08;三&#xff09;——信号量&#xff08;任务同步&资源同步&#xff09;、事件标记组&#xff08;与&或&多个任务&#xff09; 前些天发现了一个巨牛的人工智能学习网站&#xff0c…

Blazor 根据路由判断哪些页面需要加模板,哪些不需要

比如我们的登录的页面是不需要加通用模板的&#xff0c;通过if 控制 RouteView的DefaultLayout即可 <BootstrapBlazorRoot><Router AppAssembly"typeof(App).Assembly"><Found Context"routeData"><PageTitle>Title</PageTitl…

【备战蓝桥杯】如何使用Python 内置模块datetime去计算我与CSDN相遇的天数

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-6gfBeOb6YRf7C52d {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

倒计时1天|解锁「PolarDB开发者大会」正确打开方式

1月17日 9:30-16:30 北京嘉瑞文化中心 PolarDB开发者大会 明天就要和大家就见面啦&#xff5e; 大会参会指南现已出炉 各位开发者们&#xff0c;请查收~ &#x1f447;&#x1f447;&#x1f447; 点击 大会主页 or 扫描上方二维码 一键抵达大会官网&#x1f447; 查看…

Java方法及方法重载的详解

目录 一、方法的概念及使用 1.1 方法的概念 1.2 方法的定义 1.3 方法调用的执行过程 1.4 实参和形参的关系 1.5 没有返回值的方法 二、方法的重载 2.1 方法重载存在的原因 2.2 方法重载的概念 一、方法的概念及使用 1.1 方法的概念 方法就是一个代码片段. 类似于 C …

服务优雅停机SpringBoot

什么是优雅停机 ​ 优雅停机指的是Java项目在停机时需要做好断后工作。如果直接使用kill -9 方式暴力的将项目停掉&#xff0c;可能会导致正常处理的请求、定时任务、RMI、注销注册中心等出现数据不一致问题。 ​ 如何解决优雅停机呢&#xff1f;大致需要解决如下问题&#xf…

【Linux】 RPM 命令参数使用

rpm 执行安装包二进制包&#xff08;Binary&#xff09;以及源代码包&#xff08;Source&#xff09;两种。二进制包可以直接安装在计算机中&#xff0c;而源代码包将会由 RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。 常用命令组合&#xff1a; &#xff0d;ivh&a…

GZ075 云计算应用赛题第8套

2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷8 某企业根据自身业务需求&#xff0c;实施数字化转型&#xff0c;规划和建设数字化平台&#xff0c;平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”&#xff0c;拟采用开源OpenSt…

x-cmd pkg | tokei - 代码行数统计工具

目录 简介首次用户技术特点竞品和相关作品进一步阅读 简介 tokei 是一个使用 Rust 编写的显示有关代码统计信息的命令行工具&#xff0c;可以分门别类的统计目录内的代码行数。 tokei 具有良好的跨平台性&#xff0c;可以在 Linux、macOS、Windows 等多种平台上安装运行。 首…

林江院长:让斜视的孩子改“斜”归正,“正视”未来

读写时跳行、不敢和别人对视、拍照时不敢看镜头......这些不便是不少斜视患儿每天都在经历的日常。 斜视是目前儿童常见的眼科疾病之一&#xff0c;该眼病不仅给孩子的外在形象带来影响&#xff0c;更重要的是会影响双眼视功能及身心健康&#xff0c;其危害不容小觑。 7岁男孩晓…

程序员晋升管理者后的自我修养

谈到技术管理&#xff0c;首要的一点就是管理者的角色认知问题&#xff0c;因此本篇文章的主要内容就是如何增强管理者的角色认知&#xff0c;持续提升自我管理能力。 作为管理者&#xff0c;首要任务就是要认清自我并管理好自己&#xff0c;要树立对管理者角色的正确认知&…

【线路图】 DC-DC升压恒压控制驱动芯片 2.8-40V AP8100

说明 AP8100 是一款外围电路简单的 BOOST 升压恒压控 制驱动芯片&#xff0c;适用于 2.8-40V 输入电压范围的升压恒 压电源应用领域&#xff0c;启动电压可以低至 2.5V 。 芯片会根据负载的大小自动切换 PWM &#xff0c; PFM 和 BURST 模式以提高各个负载端的…

AI魔幻巨制电影《权力的游戏:重生之战》

AI魔幻巨制电影《权力的游戏&#xff1a;重生之战》 《冰与火之歌》龙妈雪诺后裔是谁&#xff1f;你相信龙族的力量可以改变维斯特洛大陆的命运吗&#xff1f; 在《权力的游戏&#xff1a;重生之战》中&#xff0c;维斯特洛大陆再次陷入混乱之中&#xff0c;但这一次的混乱并非…

Redis 交互模式

交互模式&#xff08;Interact Mode&#xff09; 安装 Redis 时通常连带安装了一个 Redis CLI &#xff08;apt install redis 或者是 apt install redis-cli 类似的&#xff09;。在本博客中将会对 redis-cli 中的常用命令做一个使用介绍&#xff0c;下文中以黑色代码块表示在…

Python单元测试框架:pytest常用测试报告类型

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 先前博客有介绍pytest测试框架的安装及使用&#xff0c;现在来聊…

Linux用户提权

新建用户 用root账户修改文件&#xff0c;添加信任用户 使用sudo提权&#xff0c;可以使用 **root删除新建账户**

JavaScript:JQuery.Ajax之错误调试帮助信息

JQuery.Ajax之错误调试帮助信息 代码&#xff1a; $(document).ready(function() {$("#info").click(function() {$.ajax({url: "/v1/getInfo",type: "post",data: { id: 1 },dataType: "json",success: function(msg) {alert(msg);}…