前端js实现模糊搜索和拼音搜索
前端在列表搜索功能中,经常遇到有很多属性的列表,属性的内容可能还有汉字,精准匹配太局限了,搜索条件需要很精准。
通过正则表达式进行模糊匹配
//input为输入的搜索内容
//生成input正则表达式进行模糊匹配
let inputArr = input.split("");
let str = "(.*?)";//正则条件
let regStr = str + inputArr.join(str) + str;
let reg = RegExp(regStr, "i"); // 以12为例生成的正则表达式为/(.*?)1(.*?)2(.*?)/i
//reg为生成的正则表达式
利用 pinyin 进行汉字转字符串
pinyin的下载
npm install pinyin@alpha --save
引用和使用
import pinyin from 'pinyin'//将拼音转成字符串数组
let valuePyArr = pinyin("我是你爹",{style:"normal"});
//{style:"normal"}参数将生成的拼音改为不带声调的(默认带声调)
//结果为 [ ["wo"], ["shi"], ["ni"], ["die"] ]//将字符串数组转成字符串
let valuePy = valuePyArr.join("");
//结果为 "woshinidie"
筛选数组逻辑
this.problems.filter((problem) => {//keys方法获取对象可迭代属性,some方法进行存在性匹配return Object.keys(problem).some((key) => {return 判断条件});
});
完整代码
searchedProblems是vue的计算属性
searchedProblems() {var input = this.searchValue; //searchValue为input中的v-model参数if (input) {//生成input正则表达式进行模糊匹配let inputArr = input.split("");let str = "(.*?)";//正则条件let regStr = str + inputArr.join(str) + str;// 以12为例生成的正则表达式为/(.*?)1(.*?)2(.*?)/ilet reg = RegExp(regStr, "i"); //过滤数组return this.problems.filter((data) => {//keys获取数组可迭代属性,some方法遍历所有属性进行存在验证return Object.keys(data).some((key) => {//将汉字属性转换成字符串数组let dataPyArr = pinyin(data[key],{style:"normal"});//将字符串数组转成字符串let dataPy = dataPyArr.join('')//搜索内容和每个value值 匹配return reg.test(dataPy)});});}return this.problems;}
前端js实现模糊搜索和拼音搜索相关推荐
- 前端 js实现模糊搜索
前端 js实现模糊搜索 template <input type="text" v-model="keyWord" @input="fuzzyQ ...
- select2.js插件新增支持拼音搜索
话不多说直奔主题 1.拼音搜索的原理: 将下拉框选项中的中文转换成汉语拼音,然后与输入的字母进行比较,如果包含则被检索出来. 2.效果: 3.在select2.js中找到matcher 方法,对此方法 ...
- 前端js实现中文转拼音 --- 完整解决方案
资料: 使用到的库 :一个实现汉字与拼音互转的小巧web工具库 作者本人的博客园文章:[干货]JS版汉字与拼音互转终极方案,附简单的JS拼音输入法 作者本人的博客文章:[干货]JS版汉字与拼音互转终极 ...
- select2.js实现拼音搜索支持
拼音搜索的原理: 将下拉框选项中的中文转换成汉语拼音(或拼音首字母),然后与输入的字母进行比较,如果包含则被检索出来. 引用插件: 1. pinyin.js文件用于将汉字转化为拼音的JavaScrip ...
- 如何避免Puppeteer被前端JS检测
工具和资料 QQ群 - Javascript高级爬虫https://jq.qq.com/?_wv=1027&k=5Bcu3YU -作者自建群,欢迎加入! 中国商标网加密接口https://gi ...
- js实现汉字转拼音(解决首字母排序问题)
实现思路 汉字有21个声母:b, p, m, f, d, t, n, l, g, k, h, j, q, x, zh, ch, sh, r, z, c, s 有韵母24个,其中单韵母有6个:a, o, ...
- 【校招VIP】前端JS语言之语法相关
考点介绍: 简单来说JavaScript也是一门轻量级的编程语言,只是他可插入到HTML中,而后由浏览器执行. 一个完整的JavaScript基本由3部分组成: 第一部分:ECMAScript是核心 ...
- 华为云 内容审核API调用 前端 js uni-app
文章目录 前言 一.华为云的内容审核api的调用需要哪些东西? 二.使用步骤 1.先注册一个华为云的账号 2.申请内容审核服务 3.[华为云内容审核API的官方文档](https://support. ...
- 如何保护前端JS代码?前端js代码加密
Web前端JS代码需要保护吗? 这得具体情况具体分析. 1.如果只是写一段web页面图片轮播,或是跑马灯效果等等之类简单的功能.那不需要保护. 2.如果是精心设计一个绚丽的特效,如果想要保护这段自己付 ...
- Node.js实现网络新闻爬虫及搜索功能(一)
Node.js实现网络新闻爬虫及搜索功能(一) Node.js实现网络新闻爬虫及搜索功能(一) 项目要求 一.爬虫部分 1. 引入相关包 2. 建立数据库连接 3. 爬取并解析网页首页 4. 爬取并解 ...
最新文章
- STM32 HAL库 串口DMA(收发)和STM32串口中断接收(接收时间管理机制)+ESP8266 wifi模组通信问题
- Border-radius属性--设置圆角边框
- WinMerge软件的使用
- android+图标+i_explore+无背景,Android Studio中Android Device Monitor中的File Explore不显示文...
- 为什么从网页上打印怎们好像被缩放_全网最详细关于3D打印的zbrush技术
- php psockopen,基于php socket(fsockopen)的应用实例分析
- android的应用组件,跟我学android-Android应用基本组件介绍(五)
- html5新加入的内容,10个html5增加的重要新特性和内容
- ES6新特性_ES6语法糖-class的类继承---JavaScript_ECMAScript_ES6-ES11新特性工作笔记036
- 使用STS创建Spring boot project报错:Project build error: Non-resolvable parent POM for
- redis的数据持久化方案
- 「大数据干货」基于Hadoop的大数据平台实施——整体架构设计
- bootbox.js文档中文版
- 【01 赖世雄英语语法:单句的语法(句子的构成)】
- 微信公众账号怎么申请
- 批量转换图片文件格式(将JPEG、PNG转成JPG)
- 用python定时发送邮件
- springboot+vue房屋租赁系统-求租合同系统java
- 学术Assignment写作怎么了解文献内容?
- java半角英数check_jQuery教程之输入内容控制为半角英数字+限定符号问题如何解决...
热门文章
- 鸿蒙大陆6.1正式版 密码,天寒大陆1.06下载 天寒大陆1.06正式版 附游戏攻略及隐藏英雄密码 魔兽防守地图 下载-脚本之家...
- 一个正经的前端学习 开源 仓库(500)
- LG V50救砖教程
- 计算机网络实验报告3-tcp,计算机网络实验报告3 TCP
- 第四章 平稳序列的拟合与预测
- 电子计算机中专考试试题,职业中专考试试题
- vue+IOS9页面白屏
- Blackman 窗函数
- 3D纹理贴图制软件The Foundry Mari for Mac
- 另存为映射技术,异速联让导出导入更简单