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

如何实现类似MySQL LIKE的JavaScript字符串模糊查询?

实现类似MySQL LIKE的JavaScript字符串匹配函数

可以通过改造搜索函数,增加对通配符%的判断逻辑,同时保留默认的startsWith行为:

核心思路

  • 默认使用startsWith实现前缀匹配(效果等同于LIKE "Bruno%")
  • 当搜索关键词以%开头时,移除通配符后用includes实现任意位置匹配(效果等同于LIKE "%Bruno%")

完整代码示例

const words = ['Bruno Nobre', 'José Bruno', 'Bruno Ricardo', 'Antônio Bruno'];

// 支持通配符的搜索函数
const searchValue = (data, keyword) => {
  // 处理开头通配符的情况
  if (keyword.startsWith('%')) {
    const target = keyword.slice(1);
    return data.filter(item => item.includes(target));
  }
  // 默认前缀匹配
  return data.filter(item => item.startsWith(keyword));
};

// 测试默认前缀匹配(对应 LIKE "Bruno%")
const prefixMatch = searchValue(words, 'Bruno');
console.log(prefixMatch); 
// 输出: ['Bruno Nobre', 'Bruno Ricardo']

// 测试任意位置匹配(对应 LIKE "%Bruno%")
const anyPositionMatch = searchValue(words, '%Bruno');
console.log(anyPositionMatch); 
// 输出: ['Bruno Nobre', 'José Bruno', 'Bruno Ricardo', 'Antônio Bruno']

扩展优化(可选)

如果需要大小写不敏感的匹配,可以在判断时统一转换为小写:

const searchValue = (data, keyword) => {
  if (keyword.startsWith('%')) {
    const target = keyword.slice(1).toLowerCase();
    return data.filter(item => item.toLowerCase().includes(target));
  }
  const target = keyword.toLowerCase();
  return data.filter(item => item.toLowerCase().startsWith(target));
};

内容的提问来源于stack exchange,提问作者Bruno Nobre

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:02:13