我希望此搜索功能能够部分匹配数组中的每个单词。考虑以下情况:
const searchTerms = ["apple", "oranges", "bananas"]
const compareAgainst1 = ["apple", "oranges" "bananas"] // should return TRUE
const compareAgainst2 = ["apple", "oranges"] // should return FALSE
const compareAgainst3 = ["appl", "orang", "banan"] // should return TRUE
const compareAgainst4 = ["appl", "orang"] // should return FALSE
到目前为止,我有这个:
const regex = new RegExp('(^|[^a-zA-Z0-9])(' + searchTerms.join('|') + ')([^a-zA-Z0-9]|$)', 'g')
const test = regex.test("apple oranges bananas")
上面的代码对数组中的某些单词进行精确匹配的测试。
有什么想法吗?
这是您可以开始的。它检查每个术语是否与给定数组完全匹配,但这只是为了简化您的解决方案。我将尝试找出一些东西
const searchTerms = ["apple", "oranges", "bananas"]
const compareAgainst1 = ["apple", "oranges", "bananas"]
const compareAgainst2 = ["apple", "oranges"]
const compareAgainst3 = ["appl", "orang", "banan"]
const compareAgainst4 = ["appl", "orang"]
function search(searchTerms, compareAgainst) {
return searchTerms.every(term => compareAgainst.includes(term));
}
console.log(search(searchTerms, compareAgainst1));
console.log(search(searchTerms, compareAgainst2));
console.log(search(searchTerms, compareAgainst3));
console.log(search(searchTerms, compareAgainst4));