位置: 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响应式布局是什么)

  • vivox70pro是双卡还是单卡(vivox70是单卡吗)

    vivox70pro是双卡还是单卡(vivox70是单卡吗)

  • 抖音直播不清晰可以调整吗(抖音直播不清晰是什么原因?)

    抖音直播不清晰可以调整吗(抖音直播不清晰是什么原因?)

  • 华为p30Pro怎么不显示快充(华为p30pro怎么不休眠)

    华为p30Pro怎么不显示快充(华为p30pro怎么不休眠)

  • 手机碎屏裂纹处发黄(手机屏幕裂碎)

    手机碎屏裂纹处发黄(手机屏幕裂碎)

  • 手机不插卡能定位吗(手机不插卡能定位找回吗)

    手机不插卡能定位吗(手机不插卡能定位找回吗)

  • 拼多多发起拼单和参与拼单的区别(拼多多发起拼单后如何取消拼单)

    拼多多发起拼单和参与拼单的区别(拼多多发起拼单后如何取消拼单)

  • 亚马逊账户关联几天能查到(亚马逊账户关联怎么申诉)

    亚马逊账户关联几天能查到(亚马逊账户关联怎么申诉)

  • 魅族17系列发布会时间(魅族17系列发布价格表)

    魅族17系列发布会时间(魅族17系列发布价格表)

  • 路由器的初始密码一般是什么(路由器的初始密码是啥)

    路由器的初始密码一般是什么(路由器的初始密码是啥)

  • sim卡读取错误怎么办(sim卡信息读取失败)

    sim卡读取错误怎么办(sim卡信息读取失败)

  • 小米电池bn45是什么手机(小米电池bn51)

    小米电池bn45是什么手机(小米电池bn51)

  • 苹果可以分屏多任务吗(苹果分屏多任务怎么添加应用程序)

    苹果可以分屏多任务吗(苹果分屏多任务怎么添加应用程序)

  • qq删除后聊天记录还有吗(qq删除后聊天记录会消失吗)

    qq删除后聊天记录还有吗(qq删除后聊天记录会消失吗)

  • iphone怎么看拦截记录(iphone怎么看拦截电话拦了几次)

    iphone怎么看拦截记录(iphone怎么看拦截电话拦了几次)

  • 天猫怎么看第几名付款(天猫怎么知道自己是第几个下单)

    天猫怎么看第几名付款(天猫怎么知道自己是第几个下单)

  • ie8以上的浏览器有哪些(ie8以上的浏览器那些设置)

    ie8以上的浏览器有哪些(ie8以上的浏览器那些设置)

  • 抖音双向关注后有什么功能(抖音双向关注的好友)

    抖音双向关注后有什么功能(抖音双向关注的好友)

  • 华为手机怎么拍照翻译(华为手机怎么拍试卷去答案)

    华为手机怎么拍照翻译(华为手机怎么拍试卷去答案)

  • 手机卡销户微信怎么办(手机卡销户微信登不上怎么办)

    手机卡销户微信怎么办(手机卡销户微信登不上怎么办)

  • 计算机中ac代表什么(计算机中ac表示什么)

    计算机中ac代表什么(计算机中ac表示什么)

  • 抖音自拍杆怎么设置(抖音自拍杆怎么安装)

    抖音自拍杆怎么设置(抖音自拍杆怎么安装)

  • 智联招聘如何投简历(智联招聘如何投诉招聘公司的人)

    智联招聘如何投简历(智联招聘如何投诉招聘公司的人)

  • 怎么看qq创建多少天(怎么看qq创建多少个群聊)

    怎么看qq创建多少天(怎么看qq创建多少个群聊)

  • 小米手环3nfc微信提醒(小米手环3有nfc)

    小米手环3nfc微信提醒(小米手环3有nfc)

  • 法宣在线该用户已失效(法宣在线该用户失效)

    法宣在线该用户已失效(法宣在线该用户失效)

  • Kamikōchi, Nagano Prefecture, Japan (© sadao/Shutterstock)

    Kamikōchi, Nagano Prefecture, Japan (© sadao/Shutterstock)

  • 酒销售账务处理
  • 分公司独立核算还需要总公司汇总缴纳吗
  • 房地产企业借款费用
  • 租入厂房改建折旧年限
  • 固定资产什么时候入账
  • 出口货物是否属于存货
  • 上月营业外收入少报入了怎么办
  • 突然收到银联入账收入怎么办
  • 科技公司营业执照经营范围明细
  • 建筑业简易征收的适用范围
  • 租赁物丢失如何赔偿
  • 个税附加扣除如何填写合适
  • 汇率的标价
  • 新会计准则开办费的账务处理
  • 收回代扣社保怎么处理
  • 转让土地使用权需要缴纳什么税
  • 分公司开票信息
  • 办公费发票可以认证吗
  • 税务更正申报需要哪些资料
  • 当月费用下月付款
  • 坏账损失企业所得税
  • 经常访问的网站怎么恢复
  • 苹果6手机蓝牙
  • 利润总额和净利润的区别
  • 政府补助具有哪些特点?
  • 企业送礼怎么办
  • 旅游服务业账务处理办法
  • 交易性金融资产的入账价值
  • 小规模纳税人和一般纳税人哪个好
  • 电脑网络提示ip地址错误怎么办
  • 工程竣工结算和决算的区别
  • 股东投资款验资后可以转出吗
  • 旧货回收增值税率是多少
  • 如何计算企业所得税税负
  • elementui
  • thinkphp5上传图片
  • 旧房屋转卖的协议怎么写
  • php判断useragent
  • css 宽度 自适应 占满
  • cv2.error:opencv(3.4.2)
  • springboot用法
  • spring boot整合hibernate
  • 引导式申报带出来的开票额与金税盘显示的不一致
  • 税务三方协议怎么重签
  • 结转生产成品
  • 卖出看跌期权的最大损失
  • 财务费用的内容包括哪些
  • 一次性开票分期收入账务处理
  • 职工食堂费列入哪里
  • 普通发票可以抵扣吗
  • 托收承付方式销售商品是什么意思
  • 公司收到个人转账收入
  • 给供应商支付货款的付款申请由谁提出
  • 退货只能退一半价钱合理吗
  • 印花税为什么不用计提
  • 小微企业免税如何做账
  • 工厂没给工人买社保我们应该找哪个部门
  • 建设项目开办费包括哪些
  • 短期理财收益账务分录
  • 本月没有销售怎么做账
  • 快递行业的会计岗位
  • 承租人和共同承租人
  • 房地产企业会计处理实务
  • 在sqlserver2008中
  • 三种实现方法实现的特点
  • sql指定字段添加数据
  • xp ie浏览器无法显示网页
  • debian reference
  • win7z
  • win8系统如何关闭防火墙
  • win7系统的桌面图标怎么调出来
  • shell脚本监控进程
  • unity控制相机旋转
  • js实现的简洁二次函数
  • js中的flat
  • python按行读取文本并输出到excel
  • 长沙房产税如何征收
  • 税控盘开票怎么添加新商品
  • 纳税申报的期限是多久
  • 国家税务认证平台是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设