Javascript 如何根据数组中预定义的关键字筛选和匹配URL中的查询

Javascript 如何根据数组中预定义的关键字筛选和匹配URL中的查询,javascript,Javascript,我需要从URL中获取“q=如何预订公交车票”(这是用户搜索),并查找与数组中预定义关键字匹配的关键字。此外,我们需要确保关键字与数组中的关键字完全匹配,然后激活一个函数。例如,如果用户搜索“我需要买一辆新公共汽车”,则该功能不应被激活,因为即使该功能包含关键字“公共汽车”,但与数组中的确切关键字“公共汽车票”不匹配 我有从URL获取查询参数的代码: let params = (new URL(document.location)).searchParams; let searchedkeywor

我需要从URL中获取“q=如何预订公交车票”(这是用户搜索),并查找与数组中预定义关键字匹配的关键字。此外,我们需要确保关键字与数组中的关键字完全匹配,然后激活一个函数。例如,如果用户搜索“我需要买一辆新公共汽车”,则该功能不应被激活,因为即使该功能包含关键字“公共汽车”,但与数组中的确切关键字“公共汽车票”不匹配

我有从URL获取查询参数的代码:

let params = (new URL(document.location)).searchParams;
let searchedkeyword = params.get("q").toLowerCase();
此外,我还有一个数组中的关键字列表:

var keyword = [new, book, old car, bus ticket]
我试过这个,但没有成功:

let matchedkeyword = keyword.filter(str => str.match(searchedkeyword));

让我知道是否可以使用JS以任何其他方式执行此操作。

您的匹配方法是错误的,您检查搜索查询是否在关键字中,它应该是相反的,您要检查关键字是否在查询中。 应该是这样的:

searchedkeyword.match(str)
另外,match方法与正则表达式一起工作,并返回字符串匹配的数组,在filter方法中不需要这样做,只需要返回true或false,因此我建议使用includes方法来实现这一点

下面是一个使用includes的代码示例:

const searchStr=“我想买一张公共汽车票”。toLowerCase();
const关键字=[“新”、“书”、“买”、“旧汽车”、“公共汽车票”];
const matchKeywords=keywords.filter(关键字=>searchStr.includes(关键字));

console.log(匹配关键字)