前端在列表搜索功能中,经常遇到有很多属性的列表,属性的内容可能还有汉字,精准匹配太局限了,搜索条件需要很精准。

通过正则表达式进行模糊匹配

//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实现模糊搜索和拼音搜索相关推荐

  1. 前端 js实现模糊搜索

    前端 js实现模糊搜索 template <input type="text" v-model="keyWord" @input="fuzzyQ ...

  2. select2.js插件新增支持拼音搜索

    话不多说直奔主题 1.拼音搜索的原理: 将下拉框选项中的中文转换成汉语拼音,然后与输入的字母进行比较,如果包含则被检索出来. 2.效果: 3.在select2.js中找到matcher 方法,对此方法 ...

  3. 前端js实现中文转拼音 --- 完整解决方案

    资料: 使用到的库 :一个实现汉字与拼音互转的小巧web工具库 作者本人的博客园文章:[干货]JS版汉字与拼音互转终极方案,附简单的JS拼音输入法 作者本人的博客文章:[干货]JS版汉字与拼音互转终极 ...

  4. select2.js实现拼音搜索支持

    拼音搜索的原理: 将下拉框选项中的中文转换成汉语拼音(或拼音首字母),然后与输入的字母进行比较,如果包含则被检索出来. 引用插件: 1. pinyin.js文件用于将汉字转化为拼音的JavaScrip ...

  5. 如何避免Puppeteer被前端JS检测

    工具和资料 QQ群 - Javascript高级爬虫https://jq.qq.com/?_wv=1027&k=5Bcu3YU -作者自建群,欢迎加入! 中国商标网加密接口https://gi ...

  6. 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, ...

  7. 【校招VIP】前端JS语言之语法相关

    考点介绍: 简单来说JavaScript也是一门轻量级的编程语言,只是他可插入到HTML中,而后由浏览器执行. 一个完整的JavaScript基本由3部分组成: 第一部分:ECMAScript是核心 ...

  8. 华为云 内容审核API调用 前端 js uni-app

    文章目录 前言 一.华为云的内容审核api的调用需要哪些东西? 二.使用步骤 1.先注册一个华为云的账号 2.申请内容审核服务 3.[华为云内容审核API的官方文档](https://support. ...

  9. 如何保护前端JS代码?前端js代码加密

    Web前端JS代码需要保护吗? 这得具体情况具体分析. 1.如果只是写一段web页面图片轮播,或是跑马灯效果等等之类简单的功能.那不需要保护. 2.如果是精心设计一个绚丽的特效,如果想要保护这段自己付 ...

  10. Node.js实现网络新闻爬虫及搜索功能(一)

    Node.js实现网络新闻爬虫及搜索功能(一) Node.js实现网络新闻爬虫及搜索功能(一) 项目要求 一.爬虫部分 1. 引入相关包 2. 建立数据库连接 3. 爬取并解析网页首页 4. 爬取并解 ...

最新文章

  1. STM32 HAL库 串口DMA(收发)和STM32串口中断接收(接收时间管理机制)+ESP8266 wifi模组通信问题
  2. Border-radius属性--设置圆角边框
  3. WinMerge软件的使用
  4. android+图标+i_explore+无背景,Android Studio中Android Device Monitor中的File Explore不显示文...
  5. 为什么从网页上打印怎们好像被缩放_全网最详细关于3D打印的zbrush技术
  6. php psockopen,基于php socket(fsockopen)的应用实例分析
  7. android的应用组件,跟我学android-Android应用基本组件介绍(五)
  8. html5新加入的内容,10个html5增加的重要新特性和内容
  9. ES6新特性_ES6语法糖-class的类继承---JavaScript_ECMAScript_ES6-ES11新特性工作笔记036
  10. 使用STS创建Spring boot project报错:Project build error: Non-resolvable parent POM for
  11. redis的数据持久化方案
  12. 「大数据干货」基于Hadoop的大数据平台实施——整体架构设计
  13. bootbox.js文档中文版
  14. 【01 赖世雄英语语法:单句的语法(句子的构成)】
  15. 微信公众账号怎么申请
  16. 批量转换图片文件格式(将JPEG、PNG转成JPG)
  17. 用python定时发送邮件
  18. springboot+vue房屋租赁系统-求租合同系统java
  19. 学术Assignment写作怎么了解文献内容?
  20. java半角英数check_jQuery教程之输入内容控制为半角英数字+限定符号问题如何解决...

热门文章

  1. 鸿蒙大陆6.1正式版 密码,天寒大陆1.06下载 天寒大陆1.06正式版 附游戏攻略及隐藏英雄密码 魔兽防守地图 下载-脚本之家...
  2. 一个正经的前端学习 开源 仓库(500)
  3. LG V50救砖教程
  4. 计算机网络实验报告3-tcp,计算机网络实验报告3 TCP
  5. 第四章 平稳序列的拟合与预测
  6. 电子计算机中专考试试题,职业中专考试试题
  7. vue+IOS9页面白屏
  8. Blackman 窗函数
  9. 3D纹理贴图制软件The Foundry Mari for Mac
  10. 另存为映射技术,异速联让导出导入更简单