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

  • 华为p30时间怎么设置24小时制(华为p30时间怎么调整)

    华为p30时间怎么设置24小时制(华为p30时间怎么调整)

  • 小布怎么设置自定义回答(小布怎么设置自己的声音)

    小布怎么设置自定义回答(小布怎么设置自己的声音)

  • 华为p40如何无线充电(华为p60可以无线充电么)

    华为p40如何无线充电(华为p60可以无线充电么)

  • 支付宝怎么取消宝卡订单(支付宝怎么取消免密支付)

    支付宝怎么取消宝卡订单(支付宝怎么取消免密支付)

  • 抖音粉丝团最高多少级(抖音粉丝下单)

    抖音粉丝团最高多少级(抖音粉丝下单)

  • 华为p40系列手机尺寸(华为p40系列手机升级鸿蒙3)

    华为p40系列手机尺寸(华为p40系列手机升级鸿蒙3)

  • hp1216用什么硒鼓(惠普1216用什么型号硒鼓)

    hp1216用什么硒鼓(惠普1216用什么型号硒鼓)

  • 447786205094空白短信怎么回事(1154246空白短信)

    447786205094空白短信怎么回事(1154246空白短信)

  • 抖音开发者是谁(抖音开发者账号是什么)

    抖音开发者是谁(抖音开发者账号是什么)

  • 华为充电图标有几种(华为充电图标有两个小闪电是啥意思)

    华为充电图标有几种(华为充电图标有两个小闪电是啥意思)

  • 荣耀30系列有耳机孔吗(荣耀30手机有耳机孔吗)

    荣耀30系列有耳机孔吗(荣耀30手机有耳机孔吗)

  • 一个人可以集几套五福(一个人可以集几个五福卡)

    一个人可以集几套五福(一个人可以集几个五福卡)

  • pdfdocument是什么意思(documents pdf)

    pdfdocument是什么意思(documents pdf)

  • 爱奇艺fun会员啥意思(爱奇艺fun会员是干啥的)

    爱奇艺fun会员啥意思(爱奇艺fun会员是干啥的)

  • 相册视频没有声音怎么办(相册视频没有声音怎么恢复)

    相册视频没有声音怎么办(相册视频没有声音怎么恢复)

  • 苹果电池一年内可以免费换(苹果电池一年内低于多少可以免费换)

    苹果电池一年内可以免费换(苹果电池一年内低于多少可以免费换)

  • ios默认字体是什么(iphone手机默认字体是什么字体)

    ios默认字体是什么(iphone手机默认字体是什么字体)

  • 微信的分明查是真的吗(微信分类怎么查看)

    微信的分明查是真的吗(微信分类怎么查看)

  • 快手账号封禁也没有显示时间咋回事(快手账号封禁也会限流吗)

    快手账号封禁也没有显示时间咋回事(快手账号封禁也会限流吗)

  • 手机触屏坏了怎么解锁(手机触屏坏了怎么导出里面的资料)

    手机触屏坏了怎么解锁(手机触屏坏了怎么导出里面的资料)

  • 一加7T Pro怎么使用专业模式拍照(一加7pro使用教程)

    一加7T Pro怎么使用专业模式拍照(一加7pro使用教程)

  • 怎么用手机登录智慧团建(怎么用手机登录别人的腾讯视频会员)

    怎么用手机登录智慧团建(怎么用手机登录别人的腾讯视频会员)

  • 决策支持系统属于什么系统(决策支持系统属于数据处理吗)

    决策支持系统属于什么系统(决策支持系统属于数据处理吗)

  • 抖音78张照片怎么卡点(抖音78张照片怎么弄)

    抖音78张照片怎么卡点(抖音78张照片怎么弄)

  • windows 11系统字体大小怎么调节? win11设置字体大小的技巧(win11字体大小怎么调)

    windows 11系统字体大小怎么调节? win11设置字体大小的技巧(win11字体大小怎么调)

  • 华为鸿蒙系统怎么查看正在运行的服务?(华为鸿蒙系统怎么看安卓版本)

    华为鸿蒙系统怎么查看正在运行的服务?(华为鸿蒙系统怎么看安卓版本)

  • frameworkservic.exe是什么进程 有什么作用 frameworkservic进程查询

    frameworkservic.exe是什么进程 有什么作用 frameworkservic进程查询

  • phpcms如何破解管理员密码(php源码破解)

    phpcms如何破解管理员密码(php源码破解)

  • 核定税种可以在哪里申报
  • 小规模纳税人需要异地预缴吗
  • 计提并结转所得税分录
  • 简易办法征收增值税怎么计算
  • 城建税会计分录怎么写
  • 纳税调整减少额是什么意思
  • 个人所得税是什么费用
  • 红冲以前年度的费用怎么做账
  • 独立核算的分公司
  • 办公费专票怎么做账
  • 应收账款是开票减去货款吗对吗
  • 员工没工资,但缴纳了社保,需要申报吗
  • 有没有退股一说
  • 借支单是借方还是贷方
  • 2020年建筑企业税收优惠政策
  • 老板垫付员工工资怎么写条子
  • 自然人代人开普票合法吗
  • 差额开票的会计分录
  • 企业以前年度的亏损在哪查
  • 怎么知道是不是强制执行
  • 购车装修能不能算固定资产
  • 收到商业承兑汇票怎么兑现
  • 凭证类别不合法怎么处理
  • 技术咨询合同书
  • WIN10显示缩略图
  • 上年度的费用今年怎么算
  • Linux中RedHat CentOS Ubuntu Fedora的区别详解
  • 苹果电脑连接打印机打印不出来
  • php tars
  • 汽车费用怎么做账
  • 销售购物卡如何交税
  • 会计月末账务处理流程图
  • 分析卡拉哈迪沙漠的形成原因
  • 企业废品处理管理办法
  • 利用python自动填问卷
  • 命令who的含义
  • gparted 命令行
  • thinkphp6多语言
  • 广告片影视公司
  • 出售子公司股权不丧失控制权
  • 企业如何利用期货对冲风险怎么操作
  • 建筑企业异地预缴增值税计算
  • 申请税控盘流程需要几个工作日
  • 销售服饰
  • 土地使用税和房产税怎么申报
  • 企业有什么税收
  • 担保公司的风险准备金在报表中如何反应
  • 工程项目工资表
  • 化粪池承包合同
  • sql server2000中事务的类型有
  • mysql存储引擎的作用
  • 建筑业 分包
  • 调表不调账都有什么情况
  • 社保补差什么流程
  • 关于消费税的会计处理
  • 银行证书费入什么科目
  • 汽车修理厂利润
  • 备用金存回银行
  • 进程管理界面
  • window组策略
  • win7使用率
  • freebsd操作命令
  • win8.1怎么用
  • windows 8.1 with update
  • win7移动硬盘写保护了怎么解除
  • searchnavversion.exe - searchnavversion是什么进程 作用是什么
  • windows万能wifi
  • 如何关闭win8自带杀毒
  • 如何让卖家给你乖乖退款
  • easyui选项卡
  • 用pyth
  • python下读取公私钥做加解密实例详解
  • shell编程$1
  • 安卓手机管家推荐
  • 手机android版本强制升级
  • jquery 通过name获取元素
  • javascript数据结构与算法百度云视频资源
  • 为什么要去山西
  • 工商财税小知识
  • 企业房产如何过户给个人
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设