如何判断用户输入是否包含关键词数组中的任意关键词?

如何判断用户输入是否包含关键词数组中的任意关键词?

本文介绍了如何使用 JavaScript 判断用户在表单中输入的内容是否包含预定义的关键词数组中的任意一个关键词。通过使用 filter 和 includes 方法,可以有效地实现模糊匹配,从而提高用户体验,并引导用户浏览特定内容。本文提供了详细的代码示例和解释,帮助开发者轻松实现这一功能。

在 Web 开发中,经常需要根据用户的输入内容执行不同的操作。一个常见的场景是,根据用户输入的关键词,将页面滚动到特定的位置。如果需要匹配多个关键词,并且允许用户输入的内容包含关键词即可,而不需要完全匹配,可以使用以下方法。

实现原理

核心思想是使用数组的 filter 方法结合字符串的 includes 方法。filter 方法用于筛选出数组中满足条件的元素,includes 方法用于判断字符串是否包含指定的子字符串。

代码示例

以下是一个完整的代码示例,演示了如何判断用户输入是否包含关键词数组中的任意关键词:

function answerQuestion() {  event.preventDefault();  var answer = document.getElementById("answer").value;  answer = answer.toLowerCase();  answer = answer.trim();  const hallasanKeyword = [    "hiking",    "climb",    "hike",    "outside",  ];  const udoKeyword = [    "cycling",    "cycle",    "bike",  ];  const lovelandKeyword = [    "art",    "fun",    "silly",  ];  const cityKeyword = [    "nightlife",    "restaurant",    "eat",  ];  if ((hallasanKeyword.filter(item => answer.includes(item))).length > 0) {    var hallasan = document.getElementById("hallasan").offsetTop;    window.scrollTo({ top: hallasan, behavior: "smooth" });  } else if ((udoKeyword.filter(item => answer.includes(item))).length > 0) {    var udo = document.getElementById("udo").offsetTop;    window.scrollTo({ top: udo, behavior: "smooth" });  } else if ((lovelandKeyword.filter(item => answer.includes(item))).length > 0) {    var loveland = document.getElementById("loveland").offsetTop;    window.scrollTo({ top: loveland, behavior: "smooth" });  } else if ((cityKeyword.filter(item => answer.includes(item))).length > 0) {    var city = document.getElementById("city").offsetTop;    window.scrollTo({ top: city, behavior: "smooth" });  } else {    alert(      "Sorry, what you typed in didn't match any of the keywords on our list! Try something else, or scroll through this page - you might find something you'd like!"    );  }}

代码解释

获取用户输入: 首先,获取用户在表单中输入的内容,并将其转换为小写,并去除首尾空格,以便进行不区分大小写的匹配。定义关键词数组: 定义包含关键词的数组,例如 hallasanKeyword、udoKeyword 等。使用 filter 和 includes 进行匹配: 对于每个关键词数组,使用 filter 方法筛选出数组中包含在用户输入中的关键词。item => answer.includes(item) 是一个箭头函数,用于判断用户输入 answer 是否包含当前关键词 item。判断是否匹配成功: 如果 filter 方法返回的数组的长度大于 0,则表示匹配成功,执行相应的操作,例如将页面滚动到特定的位置。处理未匹配的情况: 如果所有关键词数组都未匹配成功,则显示提示信息。

注意事项

大小写处理: 在进行匹配之前,将用户输入和关键词都转换为小写,可以避免大小写敏感的问题。空格处理: 使用 trim() 方法去除用户输入首尾的空格,可以提高匹配的准确性。性能优化: 如果关键词数组非常大,可以考虑使用更高效的算法,例如使用正则表达式进行匹配。

总结

通过使用 filter 和 includes 方法,可以方便地判断用户输入是否包含关键词数组中的任意关键词。这种方法简单易懂,并且能够满足大多数应用场景的需求。在实际开发中,可以根据具体情况进行适当的调整和优化。

以上就是如何判断用户输入是否包含关键词数组中的任意关键词?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1517994.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月20日 11:10:37
下一篇 2025年12月20日 11:11:03

相关推荐

  • JavaScript 实现动态背景颜色切换:无需刷新页面

    本文旨在解决网页背景颜色动态切换的问题,避免每次点击按钮都需要刷新页面的困扰。我们将通过 JavaScript 代码,实现点击按钮后随机改变背景颜色,并将颜色名称显示在页面上。核心在于每次点击事件发生时,都重新生成随机颜色值,确保每次都能获得新的颜色。 实现动态背景颜色切换 要实现点击按钮动态改变网…

    2025年12月20日
    000
  • 动态改变网页背景颜色:无需重新加载页面

    本文旨在解决网页背景颜色动态切换的问题,避免每次点击按钮都需要重新加载页面的情况。通过将颜色随机选择逻辑放置于按钮点击事件处理函数内部,确保每次点击都能获取新的颜色值,从而实现背景颜色的动态更新。本文将提供详细的代码示例和解释,帮助开发者轻松实现此功能。 在网页开发中,动态改变页面元素(例如背景颜色…

    2025年12月20日
    000
  • JavaScript 实现点击按钮动态更改背景颜色

    本文旨在帮助开发者解决使用 JavaScript 点击按钮动态更改网页背景颜色时,颜色仅改变一次的问题。通过将随机颜色选择逻辑置于按钮点击事件处理函数内部,确保每次点击都能生成新的颜色值,从而实现动态颜色切换的效果。文章提供详细的代码示例和解释,帮助读者理解并掌握该技巧。 在网页开发中,经常需要通过…

    2025年12月20日
    000
  • 动态修改网页背景颜色:无需刷新页面的实现方法

    本文旨在指导开发者如何在不刷新页面的情况下,通过点击按钮动态改变网页的背景颜色。我们将通过 JavaScript 实现颜色数组的随机选取,并将其应用到网页背景上,从而解决每次点击后需要刷新才能更新颜色的问题。 实现原理 核心问题在于,原代码只在页面加载时执行一次随机颜色选择,并将结果存储在 item…

    2025年12月20日
    000
  • Flask 应用中动态生成并流式传输客户端音频教程

    本教程详细探讨了在 Flask 应用中如何动态生成音频文件并将其流式传输到客户端,同时保持用户在当前 HTML 页面上的焦点。文章纠正了在视图函数中使用 app.post 的错误方法,并提供了基于 Flask 路由和 HTML5 标签的正确解决方案,展示了如何通过将音频流作为响应返回,并在前端通过 …

    2025年12月20日
    000
  • 动态修改网页背景颜色:无需刷新页面的JavaScript实现

    本文旨在提供一种使用JavaScript动态修改网页背景颜色的方法,无需每次点击按钮都刷新页面。通过将颜色随机选择逻辑置于点击事件处理函数内部,确保每次点击都能获取新的颜色值,从而实现动态背景颜色切换。本文将提供详细代码示例和注意事项,帮助开发者轻松实现这一功能。 要实现点击按钮动态改变网页背景颜色…

    2025年12月20日
    000
  • 优化日期格式输入:解决斜杠附近的删除问题

    本教程旨在解决在使用JavaScript格式化日期输入时,用户难以删除斜杠附近字符的问题。通过监听输入框的input事件,并结合字符串处理,实现自动添加斜杠并允许用户流畅删除字符的功能。同时,本文还讨论了该方案的局限性,并提供了一些建议,以提升用户体验。 实现自动格式化日期输入 在Web开发中,经常…

    2025年12月20日
    000
  • 离线Web应用地图解决方案:使用瓦片地图实现无网络环境下的地图展示

    离线Web应用地图解决方案:使用瓦片地图实现无网络环境下的地图展示 本文旨在提供一种在无网络环境下,为Web应用程序实现地图展示功能的解决方案。通过使用瓦片地图,并结合合适的工具下载和配置地图数据,开发者可以在离线状态下构建可交互的地图应用。本文将详细介绍如何使用OpenLayers和GMapCat…

    2025年12月20日
    000
  • 离线Web应用地图解决方案:基于瓦片地图的实现

    离线Web应用地图解决方案:基于瓦片地图的实现 正如摘要所述,本文将介绍一种利用预先下载的瓦片地图数据构建离线Web地图应用的方法。在网络受限或无网络连接的环境下,这种方法尤为重要。 核心思路:瓦片地图 瓦片地图是将地图数据分割成一系列小图片(瓦片),按照特定的层级和坐标规则进行存储。前端应用可以根…

    2025年12月20日
    000
  • 在Angular中基于另一JSON筛选数据:实用教程

    本文详细介绍了如何在Angular(JavaScript环境)中,高效地根据一个JSON数组(包含筛选ID)来过滤另一个大型JSON数组(包含完整记录)。通过结合使用JavaScript的Array.prototype.filter()和Array.prototype.some()方法,可以实现精确…

    2025年12月20日
    000
  • 使用 Angular 过滤 JSON 数据:根据 ID 匹配筛选

    本文介绍了在 Angular 项目中,如何利用 JavaScript 的 Array.prototype.filter() 和 Array.prototype.some() 方法,根据一个 JSON 数组(包含 ID)来过滤另一个 JSON 数组,从而提取出匹配 ID 的记录。通过本文提供的示例代码…

    2025年12月20日
    000
  • 浏览器和Node.js的事件循环有什么区别

    浏览器和node.js事件循环的核心区别在于运行环境与任务优先级不同。①浏览器事件循环侧重ui响应和渲染,协调dom事件、定时器及用户交互,并为页面重绘留出空间;②node.js事件循环专注于高效处理后端i/o,利用libuv库实现分阶段调度机制,包括timers、poll、check等明确阶段;③…

    2025年12月20日 好文分享
    000
  • js怎么获取原型上的方法

    获取对象原型上的方法最直接的方式是使用 object.getprototypeof() 取得原型对象,再通过 object.getownpropertynames() 配合 filter 筛选出函数类型的自有属性;2. 区分原型方法与实例方法的关键在于 hasownproperty() 检查,实例方…

    2025年12月20日 好文分享
    000
  • js 怎样用with修改数组的某个索引值

    不推荐使用with语句,1.它会导致性能问题,因javascript引擎无法在编译时确定变量归属;2.降低代码可读性和维护性,变量来源不明确;3.在严格模式下被禁止。安全修改数组索引值应直接通过索引赋值:myarray[index] = newvalue;修改前应检查索引有效性,即index &gt…

    2025年12月20日
    000
  • 在Angular中高效筛选JSON数据:基于ID匹配实现

    本文详细介绍了如何在Angular(JavaScript环境)中,根据一个JSON数组中包含的ID列表,高效地从另一个包含完整记录的JSON数组中筛选出匹配的数据。核心解决方案是利用JavaScript原生的Array.prototype.filter()和Array.prototype.some(…

    2025年12月20日
    000
  • 在Angular中根据ID高效筛选JSON数据

    本文详细介绍了如何在Angular应用中,利用JavaScript的Array.prototype.filter()和Array.prototype.some()方法,根据一个JSON数组中的ID列表,从另一个包含完整记录的JSON数组中筛选出匹配的数据。通过具体的代码示例和解析,读者将掌握一种简洁…

    2025年12月20日
    000
  • 在Angular中基于另一JSON筛选数据记录的实用教程

    本教程详细介绍了如何在Angular(或任何JavaScript环境)中,高效地根据一个JSON数组中的ID,筛选出另一个包含完整数据记录的JSON数组。核心方法是结合使用JavaScript的Array.prototype.filter()和Array.prototype.some(),通过示例代…

    2025年12月20日
    000
  • 输出格式要求:解决 Safari 与 Iframe 交互后页面缩放问题

    Safari 浏览器在与 iframe 交互后,有时会出现页面缩放的问题,影响用户体验。本文针对使用 Paddle 支付系统等场景下,iframe 交互后 Safari 浏览器页面放大的问题,提供了一种基于 React 的解决方案,通过 MutationObserver 监听并移除 PaddleJS…

    2025年12月20日
    000
  • JavaScript中实现用户输入与关键词数组的模糊匹配

    本教程将指导您如何在JavaScript中实现用户表单输入与预定义关键词数组的模糊匹配。通过结合filter()和includes()方法,您可以灵活地判断用户输入是否包含关键词,而非严格要求精确匹配,从而提升用户体验,并根据匹配结果触发页面滚动等动态行为。 1. 问题背景与传统方法的局限性 在网页…

    2025年12月20日
    000
  • JavaScript中动态构建深层嵌套对象结构的实践指南

    本文深入探讨了在JavaScript循环中动态构建深层嵌套对象结构的多种方法。针对常见的属性覆盖问题,提供了通过引用跟踪在while循环中逐步构建的解决方案,并进一步介绍了使用Array.from结合reduce或显式for循环从内向外构建的更优雅、函数式编程风格的实现。通过这些方法,开发者可以高效…

    2025年12月20日
    000

发表回复

登录后才能评论
关注微信