You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:45:00