位置: IT常识 - 正文

VUE前端实现“模糊搜索“(纯前端)(vue前端页面设计)

编辑:rootadmin
VUE前端实现“模糊搜索“(纯前端) 文章目录闲言一、整体思路二、具体步骤1. 搜索内容的字符串 -> 字符数组2. 被查询对象增加匹配度属性3. 检测匹配度,并记录到匹配度属性4. 按照匹配度降序显示,不显示匹配度为零的对象总结闲言

推荐整理分享VUE前端实现“模糊搜索“(纯前端)(vue前端页面设计),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue 前端模板,vue前端页面设计,vue.js前端,vuejs前端开发实战,vue前端开发教程,vuejs前端开发实战,vue 前端模板,vue 前端模板,内容如对您有帮助,希望把文章链接给更多的朋友!

提示:可以跳过闲言,直接上干货,这里谈谈我的思路是如何诞生的。 昨天我开发的内容轮到输入搜索,从UI上看:input输入框 + button搜索按钮,就实现了。关键在于背后如何实现对数据的搜索功能,常见方法:搜索内容给到后端,sql语句进行模糊查询,将结果返回前端,再显示。然而情况有所不同,如果后端数据库的所有信息,在页面created时就全部给前端了呢?这种情况下,如果使用常见,未免有点浪费时间,但是前端的JS如何实现模糊查询?于是我和舍友讨论前端实现模糊查询的问题时,我们以百度为例,思考百度的搜索功能是如何实现的呢?我当时开玩笑似的说“百度说不定是把我们输入的搜索内容全部打散成字符数组,然后进行的匹配”。第二天,我继续做开发时,发现网上纯前端实现模糊查询的我都看不懂(俺这个阅读能力不行),所以我决定就按照我昨天的思路做做尝试,于是就有了今天这篇博客。

VUE前端实现“模糊搜索“(纯前端)(vue前端页面设计)

提示:以下是本篇文章正文内容,下面案例可供参考

一、整体思路

核心思想: 将输入的内容拆分成单个字符形成搜索数组,然后利用indexOf查看被查询对象与这个搜索数组的重合度/匹配度(计算每个字符在被查询对象中出现的次数),并做好记录,之后就是排序和显示。

具体步骤:

将用户输入的搜索内容即字符串,划分成字符数组(后续称为搜索数组)为每个被查询对象增加匹配度属性,检测搜索数组与每个被查询对象的匹配程度,并记录到该对象的匹配度属性将所有被查询对象按照自身的匹配度属性降序排列,且不显示零匹配度的对象

注意:

被查询对象是以对象数组的形式存储,对象数组中存储所有被查询对象二、具体步骤

注意:

此次搜索输入:试卷名称相关内容根据输入内容,查询哪些试卷的试卷名称与之匹配1. 搜索内容的字符串 -> 字符数组this.selectContent:用户输入的搜索内容字符串selectList:划分后的字符数组var selectList=this.selectContent.split('');2. 被查询对象增加匹配度属性thiis.testPaperListPart:被查询对象的对象数组,即存储所有试卷的试卷对象数组this.testPaperListPart[i].matchDegree=0; // 建立匹配度,初始为03. 检测匹配度,并记录到匹配度属性this.testPaperListPart[i].testName:被检测对象的实际检测内容,即每个试卷的试卷名称,主要检测试卷名称与输入内容的匹配程度通过indexOf方法实现检测匹配度,相关博客《indexOf介绍》、《js 查找字符串中某个字符出现的位置和次数》。我们根据indexOf得知搜索数组中每个字符在被检测对象的检测内容中的出现次数,根据出现次数计算匹配度属性。

举例:

搜索数组:selectList=[‘语’,‘文’,‘下’];某一个试卷的试卷名称:this.testPaperListPart[i].testName=‘大学语文(文化版下)’;利用indexOf,检测该试卷的试卷名称与搜索数组的匹配度:其中 ‘语’ 出现了1次、‘文’ 出现了2次、‘下’ 出现了1次;那么该testName与搜索数组的匹配度即1+2+1=4次,则该试卷的匹配度matchDegree=4。for(var i=0;i<this.testPaperListPart.length;i++){ // 建立匹配度,初始化为0 this.testPaperListPart[i].matchDegree=0; // 检测匹配度 for(var k=0;k<selectList.length;k++){ // 利用indexOf,记录每个字符在testName中出现的个数,并记录到匹配度 var index = this.testPaperListPart[i].testName.indexOf(selectList[k]); while(index!=-1){ this.testPaperListPart[i].matchDegree++; index=this.testPaperListPart[i].testName.indexOf(selectList[k],index+1); } }}4. 按照匹配度降序显示,不显示匹配度为零的对象// 根据匹配度排序this.testPaperListPart.sort(function(a, b){return b.matchDegree - a.matchDegree}); // 删除匹配度为0的试题、删除matchDegree属性var k=0;while (k<this.testPaperListPart.length){// 删除匹配度为0的试题 if(this.testPaperListPart[k].matchDegree==0){ this.testPaperListPart.splice(k,1); continue;// 直接进入下一个循环 } Reflect.deleteProperty(this.testPaperListPart[k],'matchDegree'); // 删除matchDegree属性 k++;}总结
本文链接地址:https://www.jiuchutong.com/zhishi/287286.html 转载请保留说明!

上一篇:ElementPlus DateTimePicker日期时间选择器限制可选时间范围(精确时分秒)

下一篇:h5响应式布局、PC和移动端适配方案(h5响应式布局是什么)

  • tplink无线中继设置(tplink无线设置)(tplink中继wifi)

    tplink无线中继设置(tplink无线设置)(tplink中继wifi)

  • 荣耀50返回键怎么调出来(荣耀50返回键怎么设置)

    荣耀50返回键怎么调出来(荣耀50返回键怎么设置)

  • 微信群右上角圆圈的删除办法(微信群右上方有个圆圈)

    微信群右上角圆圈的删除办法(微信群右上方有个圆圈)

  • vivo手机怎么关闭上滑快捷栏中心(vivo手机怎么关闭自动下载功能)

    vivo手机怎么关闭上滑快捷栏中心(vivo手机怎么关闭自动下载功能)

  • 怎么下载爱奇艺视频到电脑(怎么下载爱奇艺app)

    怎么下载爱奇艺视频到电脑(怎么下载爱奇艺app)

  • 华为nova7pro有呼吸灯吗(华为nova7pro有呼吸灯吗怎么设置)

    华为nova7pro有呼吸灯吗(华为nova7pro有呼吸灯吗怎么设置)

  • 退出钉钉登录后,原来信息还有吗(退出钉钉登录后怎么进入)

    退出钉钉登录后,原来信息还有吗(退出钉钉登录后怎么进入)

  • 抖音直播间不进人,什么原因(抖音直播间不进去是不是就看不到)

    抖音直播间不进人,什么原因(抖音直播间不进去是不是就看不到)

  • iphonexsmax双卡还是单卡(xsmax双卡好用吗)

    iphonexsmax双卡还是单卡(xsmax双卡好用吗)

  • iphone11pro max屏幕发黄(iphone11pro max屏幕尺寸)

    iphone11pro max屏幕发黄(iphone11pro max屏幕尺寸)

  • 苹果用多久电池变99(苹果用多久电池变96)

    苹果用多久电池变99(苹果用多久电池变96)

  • 为什么xr的热点电脑用不了(为什么xr的热点打不开)

    为什么xr的热点电脑用不了(为什么xr的热点打不开)

  • qq那么多人扩列干什么吗(qq扩列每个人都有吗)

    qq那么多人扩列干什么吗(qq扩列每个人都有吗)

  • 支付宝蚂蚁森林浇水会用自己的能量吗(支付宝蚂蚁森林能量对照表)

    支付宝蚂蚁森林浇水会用自己的能量吗(支付宝蚂蚁森林能量对照表)

  • 电脑一直启动修复状态怎么办(电脑一直启动修复循环咋办)

    电脑一直启动修复状态怎么办(电脑一直启动修复循环咋办)

  • 快手为什么没有提现这功能(快手为什么没有亲密关系)

    快手为什么没有提现这功能(快手为什么没有亲密关系)

  • word文档表格如何调整行距(word文档表格如何调整宽度)

    word文档表格如何调整行距(word文档表格如何调整宽度)

  • 拼多多如何匿名购买(拼多多如何匿名购买东西)

    拼多多如何匿名购买(拼多多如何匿名购买东西)

  • 乐视手机卡顿反应慢怎么办(乐视手机卡顿反应慢)

    乐视手机卡顿反应慢怎么办(乐视手机卡顿反应慢)

  • 导航窗格有什么内容(导航窗格什么用)

    导航窗格有什么内容(导航窗格什么用)

  • videleap怎么保存视频(vi命令怎么保存)

    videleap怎么保存视频(vi命令怎么保存)

  • win10锁屏壁纸变黑白解决教程(win10锁屏壁纸模糊怎么回事)

    win10锁屏壁纸变黑白解决教程(win10锁屏壁纸模糊怎么回事)

  • mac怎么恢复出厂设置?苹果电脑系统恢复出厂设置教程图解(mac怎么恢复出厂值)

    mac怎么恢复出厂设置?苹果电脑系统恢复出厂设置教程图解(mac怎么恢复出厂值)

  • 财务软件使用制度
  • 个人所得税申报密码如何设置
  • 转租房产税计税依据
  • 软件即征即退的发票怎么开
  • 不动产服务具体有哪些
  • 在建工程是资产
  • 固定资产抵债要交税吗怎么交
  • 税号开错了
  • 确认投资收益是按照出资比例还是股权比例
  • 出口贸易没有进口贸易
  • 不是本公司员工
  • 债权债务转让税务问题
  • 劳务费税收分类是什么
  • 开具红字发票后发现购买方已做抵扣怎么办
  • 事业单位收到投资的账务处理
  • 增值税差旅费可以扣除吗
  • 子公司和母公司的财务关系
  • 结转应交增值税会计科目
  • 电脑不用的情况下怎么让它关闭屏幕
  • 初级会计实务的心得体会
  • 事业单位收受礼品怎么处理
  • 王者荣耀中张飞的台词
  • win7电脑怎么样
  • php 7z
  • 待抵扣进项税额贷方表示什么
  • 房屋装修补偿款 避税
  • msmpeng.exe是什么程序
  • android上传图片到服务器
  • vue上传文件和后端upload
  • 预提费用新会计准则叫什么科目
  • 已抵扣增值税进什么科目
  • 什么叫自适应控制
  • pytorch train()
  • 知名个人网站
  • python设置配置文件
  • 租赁增值税发票税率
  • 新建厂房如何计提折旧费用
  • 长期借款主要包括哪些
  • 选择mysql数据库为当前数据库
  • 织梦怎么新建页面
  • 应收款和实收款区别
  • 加油卡充值如何退款
  • 自然人个税申报密码怎么获取
  • 更正申报季度企业所得税
  • 业务招待费税务风险
  • 增值税的账务处理怎么做
  • 车船税征收范围有
  • 税号指的是什么
  • 动迁补偿金
  • 已抵扣认证的发票开红字发票需要将原票退回吗
  • 离线发票累计金额为0
  • 社平工资调整补差能补多少
  • 会计核算健全的单位 可以选择小规模纳税的有
  • 商业承兑汇票过期了怎么办
  • 收到进项发票不认证抵扣的会计分录
  • 本年收益属于什么科目
  • sql根据逗号分割数据
  • 硬盘安装windows11
  • win7系统开机黑屏
  • Win7的sysprep工具怎么用 win7自带sysprep工具重置系统方法
  • 怎么关闭xp系统弹窗
  • windows7播放器无法打开
  • linuxat命令的用法
  • linux安装步骤
  • android环境搭建教程
  • 样式的使用方法
  • css跑马灯效果
  • opengl gltranslatef
  • python windows gui
  • color 对于当前会话,更改命令提示窗口的前景和背景色
  • python dict 转 list
  • js中bom是什么意思
  • 浙江发票查验不了什么原因
  • 税控系统技术维护费抵税怎么申报
  • 开票信息不一致怎么回事
  • 即征即退什么时候退
  • 四川 国税
  • 保险机构如何代收车船税
  • 土地交的契税会计科目
  • 电子发票查询平台打印
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设