前端的匹配方式有很多这里简单提供模糊匹配方式:使用 RegExp 函数 正则表达式来进行匹配
- 正则表达式
var list = ['nai','43q','5xn']
var keyWord = 'n'
var arr = []
var reg = new RegExp(keyWord)
for(var i = 0; i < list.length; i++) {
if(list[i].match(reg)) {
arr.push(list[i]);
}
}
return arr;
或
var list = ['nai','43q','5xn']
var keyWord = 'n'
var arr = []
var reg = new RegExp(keyWord)
list.forEach((item,index) => {
if(list[index].match(reg)) {
arr.push(list[index]);
}
})
console.log(arr);
forEach、for in 、 for of三者的区别: https://blog.csdn.net/one_girl/article/details/80192899
- 将此模糊匹配放入输入框监听事件中,就可以做到动态的模糊匹配了
// 输入框操作
public changeInput = (e: any) => {
const value = e.target.value
this.setState(() => ({ userName: value }))
// this.getPerson({ name: value })
// 模糊匹配人名
let certsList: any[] = []
let reg = new RegExp(value)
this.state.certsListAll.forEach((item,index)=>{
if (this.state.certsListAll[index].userName.match(reg)) {
certsList.push(this.state.certsListAll[index])
}
})
this.setState(() => ({ certsList: certsList }))
}
网上还发现了另一种方法
- 字符串方法indexOf
var arr = [];
for(var i=0;i<list.length;i++){
//如果字符串中不包含目标字符会返回-1
if(list[i].indexOf(keyWord)>=0){
arr.push(list[i]);
}
}
return arr;
正则表达式更多参考:
{JS}JavaScript使用正则表达式 https://blog.csdn.net/grueclan/article/details/2153960
https://blog.csdn.net/weixin_45788388/article/details/105842615
MySQL 正则表达式(REGEXP)https://blog.csdn.net/qq_36761831/article/details/82862135
https://blog.csdn.net/weixin_41360448/article/details/81537577