js indexOf实现模糊搜索时区分大小写问题解决
在如今 前端开发在整个开发过程中,也要处理很多数据逻辑了 那么模糊搜索 用filter数组过滤 与 indexOf模糊搜索 显然是很不错的写法 但indexOf 有个很大的问题 那就是 他是区分大小写的 例如 L 和 l 在indexOf下是不能匹配的 那么这个时候我们就需要将他们转换过来
toUpperCase 将字符串变量转成大写 toLowerCase 将字符串变量转成小写
显然,这两个方法都能解决问题
参考代码如下
let data = [
{
id: 1,
name: Gr你好
},
{
id: 2,
name: gG 这是一局愉快的游戏
},
{
id: 3,
name: 数据编制的时代
}
]
let text = g
let distinguish = data.filter((e) => e.name.indexOf(text) != -1)
let nodistinguish = data.filter((e) => e.name.toLowerCase().indexOf(text.toLowerCase()) != -1)
console.log(distinguish); //[{id: 2,name: gG 这是一局愉快的游戏}]
console.log(nodistinguish); /* [{id: 1,name: Gr你好},{id: 2,name: gG 这是一局愉快的游戏}] */
其实原理也很简单 就是将条件和内容都转成大写 或者 都转成小写 在进行过滤
