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

字符串不完全相等时如何匹配,实现带路径前缀的文件名筛选需求

数组按文件名匹配筛选的调整方案

你当前代码的问题是Array.includes()为全字符串匹配,names数组中的元素携带路径前缀,无法直接和materials中存储的纯文件名匹配,因此无法筛选出目标结果。

高效实现方案(推荐)

提前将names数组中的路径统一处理为纯文件名存入Set,后续匹配的时间复杂度为O(1),适合names数据量较大的场景:

const names = ['h2/rea.jpg']
const materials = [{
  name: 'hgb.jpg'
}, {
  name: 'rea.jpg'
}, {
  name: 'ca.png'
}]

// 提取所有路径的纯文件名存入Set
const pureFileNameSet = new Set(names.map(path => path.split('/').pop()))

const res = materials.filter(item => pureFileNameSet.has(item.name))
console.log('RES', res) // 输出符合预期的 [ {name: 'rea.jpg'} ]

轻量实现方案

如果names数据量很小,也可以直接在筛选逻辑中做后缀匹配,同时兼容names中存在纯文件名的场景:

const res = materials.filter(item => {
  // 匹配规则:路径以`/文件名`结尾,或者路径本身就是文件名
  return names.some(path => path.endsWith(`/${item.name}`) || path === item.name)
})

内容的提问来源于stack exchange,提问作者bruce lee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:27:04