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 这是一局愉快的游戏}] */

其实原理也很简单 就是将条件和内容都转成大写 或者 都转成小写 在进行过滤

经验分享 程序员 微信小程序 职场和发展