JavaScript如何实现支持搜索词颠倒的姓名数组模糊搜索功能
多词倒序姓名搜索功能实现
思路正确性说明
你的核心思路完全正确:将搜索输入按空格拆分为独立关键词,再通过every方法校验所有关键词是否都存在于目标姓名字符串中,天然支持关键词顺序颠倒的匹配需求。你当前代码运行不符合预期是两个细节问题导致的:
- 没有将搜索关键词统一转为小写,和姓名的小写转换不匹配会导致大小写敏感的漏匹配
filter的回调函数没有返回every方法的执行结果,相当于每次过滤都返回空值,最终结果为空
完整可运行代码
const studentNames = ['Alan Hope', 'Greg Day', 'Alan Peters'] function search () { // 若需要从表格取搜索输入可保留本行,此处示例写死搜索词可注释 // const bankingSheet = ss.getSheetByName('Banking') const searchInput = 'peter Al' // 也可替换为表格中取到的搜索输入值 // 拆分关键词并统一转为小写 const searchWords = searchInput.split(/\s+/).map(word => word.toLowerCase()) const filtered = studentNames.filter(function(name) { // 姓名也转小写,匹配所有关键词的子串 const lowerCaseName = name.toLowerCase() return searchWords.every(function(word) { return lowerCaseName.indexOf(word) !== -1 }) }) // Google Apps Script环境用Logger,浏览器/Node环境可换为console.log Logger.log(filtered) return filtered } // 调用测试 search() // 输出 ['Alan Peters']
效果验证
不同搜索输入的返回结果如下:
- 输入
Hope Al→ 返回['Alan Hope'] - 输入
peter Al→ 返回['Alan Peters'] - 输入
Gr→ 返回['Greg Day']

内容的提问来源于stack exchange,提问作者lmcc
相关产品推荐
相关产品推荐

