搜索字符串数组以找到匹配的单词之一
Posted
技术标签:
【中文标题】搜索字符串数组以找到匹配的单词之一【英文标题】:Searching through an array of strings to find one of the words matching 【发布时间】:2022-01-23 04:31:19 【问题描述】:我试图让我的用户输入一个搜索词,然后返回数组中与他们输入的所有名称匹配的字符串。因此,如果他们在这里输入 clinton,它会找到所有的 clintons,但如果他们搜索 hillary clinton,省略 rodham 中间名,它会返回 hillary,但不会返回 bill 或 chelsea。
const array = ['hillary rodham clinton', 'bill clinton', 'chealsea clinton', 'louise penny', 'amanda litman']
const searchTerm1 = 'hillary clinton' // should return hillary rodham clinton
const searchTerm2 = 'clinton' // should return hillary rodham clinton, bill clinton, chelsea clinton
const searchTerm3 = 'hillary' // should return hillary rodham clinton
【问题讨论】:
【参考方案1】:假设您的搜索词总是由一个空格分隔,您可以执行以下操作:
const array = ['hillary rodham clinton', 'bill clinton', 'chealsea clinton', 'louise penny', 'amanda litman']
const searchTerm1 = 'hillary clinton' // should return hillary rodham clinton
const searchTerm2 = 'clinton' // should return hillary rodham clinton, bill clinton, chelsea clinton
const searchTerm3 = 'hillary' // should return hillary rodham clinton
let find = (term) => array.filter(item => term.split(' ').every(r => item.split(' ').includes(r)))
console.log(find(searchTerm1))
console.log(find(searchTerm2))
console.log(find(searchTerm3))
【讨论】:
【参考方案2】:您可以使用此功能进行搜索。
function search(searchTerm, array)
const words = searchTerm.split(" ");
let tmpArray = array;
for (let i = 0; i < words.length; i++)
tmpArray = tmpArray.filter(obj => obj.indexOf(words[i]) >= 0);
return tmpArray;
const newArray1 = search(searchTerm1, array);
const newArray2 = search(searchTerm2, array);
const newArray3 = search(searchTerm3, array);
【讨论】:
以上是关于搜索字符串数组以找到匹配的单词之一的主要内容,如果未能解决你的问题,请参考以下文章
如何在整个消息中搜索一个单词,将该单词分解为一个数组,然后检查其他数组以查看它是不是匹配?
通过删除字母匹配到字典里最长单词--双指针or自动机预处理?
Leetcode——通过删除字母匹配到字典里最长单词(子序列)