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

  • 华为荣耀悬浮窗口怎么打开(华为荣耀悬浮窗怎么用)

    华为荣耀悬浮窗口怎么打开(华为荣耀悬浮窗怎么用)

  • 华为8+256的手机有那几种(华为手机 8+256gb)

    华为8+256的手机有那几种(华为手机 8+256gb)

  • vivo s6什么时候上市的(vivo s6什么时候上市的它的主打是什么)

    vivo s6什么时候上市的(vivo s6什么时候上市的它的主打是什么)

  • vivo手机内存越来越少怎么回事(vivo手机内存越来越少怎么清理)

    vivo手机内存越来越少怎么回事(vivo手机内存越来越少怎么清理)

  • 默认卡是什么意思(默认卡是什么意思呀)

    默认卡是什么意思(默认卡是什么意思呀)

  • 全屏快捷键ctrl加什么(全屏快捷键ctrl加什么F5)

    全屏快捷键ctrl加什么(全屏快捷键ctrl加什么F5)

  • 耳机的播放器是什么(耳机播放器搭配)

    耳机的播放器是什么(耳机播放器搭配)

  • 苹果11的屏幕和苹果11pro屏幕相差很多吗(苹果11的屏幕和8p的屏幕哪个好)

    苹果11的屏幕和苹果11pro屏幕相差很多吗(苹果11的屏幕和8p的屏幕哪个好)

  • 多wan口能当lan口用吗(多wan口路由)

    多wan口能当lan口用吗(多wan口路由)

  • i5 650配什么主板(i5650配什么主板)

    i5 650配什么主板(i5650配什么主板)

  • 用蓝牙怎么传软件(用蓝牙怎么传软件到另一个手机)

    用蓝牙怎么传软件(用蓝牙怎么传软件到另一个手机)

  • 电脑连上wifi却上不了网(电脑连上wifi却上不了网怎么办)

    电脑连上wifi却上不了网(电脑连上wifi却上不了网怎么办)

  • 手机微信反应慢是怎么回事(手机微信反应慢接不到信息是怎么回事)

    手机微信反应慢是怎么回事(手机微信反应慢接不到信息是怎么回事)

  • 手机不支持一键刷机,怎么办(手机不支持多键操作怎么办)

    手机不支持一键刷机,怎么办(手机不支持多键操作怎么办)

  • 苹果x怎么连接itunes

    苹果x怎么连接itunes

  • 华为mate30支持5g网吗(华为mate30支持5G频段)

    华为mate30支持5g网吗(华为mate30支持5G频段)

  • hd1080p什么意思(hd好还是1080好)

    hd1080p什么意思(hd好还是1080好)

  • 手机内存不足删除哪里(手机内存不足删除的照片还能恢复吗)

    手机内存不足删除哪里(手机内存不足删除的照片还能恢复吗)

  • 微信设置延迟到账怎么把钱撤回来(微信设置延迟到账扫码也延迟到账吗)

    微信设置延迟到账怎么把钱撤回来(微信设置延迟到账扫码也延迟到账吗)

  • 为什么朋友圈文字只显示一行(为什么朋友圈文章打不开)

    为什么朋友圈文字只显示一行(为什么朋友圈文章打不开)

  • Macbook怎么压缩和解压缩文件?(macbook怎么压缩视频大小)

    Macbook怎么压缩和解压缩文件?(macbook怎么压缩视频大小)

  • VMware 10 上安装Mac OS X 10.9 系统图文详解教程(vmware10怎么安装)

    VMware 10 上安装Mac OS X 10.9 系统图文详解教程(vmware10怎么安装)

  • Nuxt3从零开始配置与打包发布(nuxt支持vue3吗)

    Nuxt3从零开始配置与打包发布(nuxt支持vue3吗)

  • 原材料报废可以退税吗
  • 出口退税退的税是用进项税抵扣吗
  • 工商年报多久能显示
  • 行政事业单位住房基金
  • 先开票后跨月预缴税款可以吗
  • 商品进销差价在贷方代表什么
  • 一般纳税人资格认定条件
  • 生产经营年度汇缴申报时间
  • 应付职工薪酬纳税调整比例
  • 结转损益类费用科目的余额
  • 进口转卖业务
  • 行政单位特殊人工手机电话费是否可以报销
  • 税费返还怎么做会计科目
  • 冲销暂估入库
  • 企业转让未入账怎么办
  • 运输公司租入的车辆如何核算
  • 加油的时候可以开发票吗
  • 小规模公司怎么注册
  • 稳岗补贴计入哪个科目
  • 金税盘与税控盘及报税盘怎么区分
  • 通讯费发票抬头为个人能否报销
  • 外贸企业出口货物会计账务处理
  • 工会费是税前扣除还是税后扣除
  • 小规模纳税人建筑行业
  • 研发企业税率
  • 防暑降温用品进什么科目
  • 少计收入被处罚账务处理怎么做?
  • 制作广告费用
  • 应付职工薪酬包括个人社保和个税吗
  • 固定资产资产评估
  • 在win7系统中将打开窗口拖到屏幕顶端
  • Windows 2003 SP2 简体中文版下载地址
  • 交易性金融资产是什么意思
  • 原始凭证容易出现错误的原因
  • php floor()
  • 财政返还土地奖金的规定
  • php递归函数的例子
  • 同一控制下企业合并发生的审计费用计入
  • 合并财务报表抵消原理
  • vue viewui
  • python 捕捉窗口
  • 2022-8-30 servlet
  • 计提坏账准备不会影响应收账款账面价值
  • 小规模纳税人每月不超过10万
  • 在线客服系统登录
  • 预提开发成本的会计分录
  • 有净残值的固定资产如何折旧
  • 非税收入统一票据怎么查询
  • sql server 2016 sp3
  • mysql中的null值和空
  • 外贸企业出口货物会计分录
  • 收入不足3000
  • 什么是建筑服务的甲供工程
  • 出口退的税交附加税吗
  • 建筑业清包工合同范本
  • 房地产企业城建税和教育费附加怎么算
  • 行政单位维修管理制度
  • 企业发生的各项罚款收入应计入
  • 外资企业贷款条件
  • 货款扣除质量赔款
  • 出口收到货款怎么做账
  • 企业收到劳务费会计分录怎么做账
  • 支付水电费取得专用发票上注明税金0.68万元
  • 旅游企业相关服务案例
  • incorrect email format, please re-enter.
  • win7使用临时配置文件登录
  • linux的简单使用
  • javascriptz
  • cocos2dx schedule
  • unity3d游戏引擎支持几种平台发布?
  • android源码分析实录
  • Unity C#用WWW操作数据库
  • Node.js中的事件循环是什么意思
  • Linux进程间通信——使用流套接字
  • js实现超精简的快捷键
  • 安卓 crash
  • 东莞市国税局南城莫
  • 我国税制结构是怎样的
  • 公司如何制定制度
  • 薰衣草商业价值
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设