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

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

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值