如何让nzshowsearch实现不区分大小写的搜索功能?
不区分大小写的表单搜索实现方案
核心思路是把检索输入内容和待匹配的数据源字段内容统一转为相同大小写格式后再做匹配,不需要修改原始存储的JSON数据,只需要修改搜索匹配的逻辑即可,下面是不同场景的实现示例:
前端JS原生实现方案
假设你已经拿到从后端加载的JSON表单数据存在formData数组中,搜索输入框的值存在searchInput变量中:
// 1. 先把用户输入统一转成小写(转大写也可,保持两边一致就行) const formattedSearch = searchInput.trim().toLowerCase() // 2. 遍历数据源做匹配时,把待匹配的字段也转成小写 const matchedResults = formData.filter(item => { // 这里可以替换成你实际要检索的字段,比如name、title、content等 return item.targetField.toLowerCase().includes(formattedSearch) })
如果需要同时匹配多个字段,可以这么写:
const matchedResults = formData.filter(item => { return Object.values(item).some(val => typeof val === 'string' && val.toLowerCase().includes(formattedSearch) ) })
特殊场景注意事项
- 如果你的数据里包含非英文的大小写字符(比如德语的ß、法语的带重音符号字符),可以用
toLocaleLowerCase()代替toLowerCase(),适配多语言场景 - 如果需要做全字匹配而不是模糊匹配,把
includes替换成===即可 - 不要直接修改原始加载的JSON数据的大小写,只在匹配逻辑层做转换,避免影响表单的正常展示和提交
小优化:如果数据量超过1000条,可以提前把所有待检索字段的小写格式缓存起来,减少每次搜索时的转换开销,提升检索速度
内容的提问来源于stack exchange,提问作者Yash Sharma
相关产品推荐
相关产品推荐

