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

本文介绍了如何使用 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!"
    );
  }
}

代码解释

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

注意事项

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

总结

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

以上就是如何判断用户输入是否包含关键词数组中的任意关键词?的详细内容,更多请关注骃骐网【www.myinqi.com】。

相关推荐:

高效提取目标数组中满足多组上下界条件的索引列表

本文介绍如何在 Python 中高效获取多个上下界区间内目标数组元素的原始索引,重点对比朴素布尔掩码、NumPy 向量化搜索与排序+二分查找三种方法,推荐使用 np.searchsorted 实现毫秒级批量区间定位。 本文介绍如何在 python 中高效获取多个上下界区间内目标数组元素的原始索引,重点对比朴素布尔掩码、numpy 向量化搜索与排序+二分查找三种方法,推荐使用 `np.searchs...

高效提取目标数组中满足多组上下界条件的索引列表(基于排序+二分搜索)

本文介绍如何在Python中高效提取目标数组中落在多组动态上下界范围内的元素索引,重点对比原始逐条件布尔掩码法与基于排序+二分搜索(bisect/np.searchsorted)的优化方案,实测numpy版本性能提升达45倍。 本文介绍如何在Python中高效提取目标数组中落在多组动态上下界范围内的元素索引,重点对比原始逐条件布尔掩码法与基于排序+二分搜索(`bisect`/`np.searchs...

如何在Python中高效查找数组中的众数_使用Boyer-Moore投票算法

Boyer-Moore投票算法适合找众数,因其仅需O(1)空间和O(n)时间,且不预设众数存在,核心是候选抵消逻辑;但必须二次遍历验证候选是否真满足出现次数>n/2,否则结果不可靠。 为什么 Boyer-Moore 投票算法适合找众数 它只用 O(1) 空间、O(n) 时间,且不要求提前知道众数是否存在——特别适合处理超大数组或流式数据。但注意:该算法**只保证在众数存在时返回它**;如果不存在众...

Python中如何提取NumPy数组中满足条件的元素索引_使用where函数筛选

np.where返回索引元组而非一维数组,二维数组返回(row_indices, col_indices);需用[0]取行索引、zip(*np.where())得坐标对、flatnonzero得线性索引;注意条件优先级、视图赋值及性能差异。 np.where 返回的是索引元组,不是一维索引数组 直接对二维数组调用 np.where(condition) 会返回一个长度为 ndim 的元组,比如二维...

如何基于条件删除重复行:保留每组中存在超阈值数值的整组,否则仅留首行

本文介绍使用pandas高效清洗数据的方法:对指定列(如a)分组后,若组内任意行在另一列(如b)存在大于阈值(如100)的值,则保留该组全部行;否则仅保留该组首次出现的行。 本文介绍使用pandas高效清洗数据的方法:对指定列(如a)分组后,若组内任意行在另一列(如b)存在大于阈值(如100)的值,则保留该组全部行;否则仅保留该组首次出现的行。 在实际数据分析中,常需按某列(如用户ID、类别标签)...

如何在PHP中查找数组中的值?in_array()和array_search()的应用

in_array()用于判断值是否存在并返回布尔值,array_search()则返回匹配值的键名,选择取决于是否需要获取位置信息。 在PHP中查找数组中的值,最常用且高效的两个内置函数是in_array()和array_search()。简单来说,in_array()用来判断某个值是否存在于数组中,返回一个布尔值;而array_search()则更进一步,它会返回匹配到的值的键名(或索引),如果...

PHP 数组中根据嵌套值过滤集合元素的教程

本教程详细介绍了如何在 PHP 中高效地从数组中移除嵌套的集合元素,特别是当集合内某个特定键的值为 null 或空时。文章将通过 array_filter() 函数结合箭头函数(或匿名函数)实现精确过滤,并演示如何使用 array_values() 重置数组键,以满足不同的业务需求。在 php 开发中,我们经常会遇到需要处理复杂数据结构的情况,例如一个包含多个关联数组(或称集合)的数组。有时,我们...

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

本文介绍了如何使用 JavaScript 判断用户在表单中输入的文本是否包含预定义的关键词数组中的任何一个关键词。通过使用 filter 和 includes 方法,可以有效地实现模糊匹配,从而提高用户体验和程序的灵活性。文章提供了详细的代码示例,帮助开发者理解和应用该技术。在 web 开发中,经常需要根据用户的输入执行不同的操作。一个常见的场景是,根据用户在表单中输入的内容,判断其是否包含某些预...

如何在PHP中删除数组中的元素?使用unset()或array_splice()方法

删除PHP数组元素可用unset()或array_splice():前者按键删除且不重置索引,后者按位置删除并重置索引;根据键名删除选unset(),按索引或需重索引用array_splice()。 删除PHP数组中的元素,主要有两种方式:unset() 和 array_splice()。 unset() 更简单直接,适合删除单个或多个已知键名的元素;而 array_splice() 则更强大,能...

如何在PHP中处理数组中的null值?array_filter()与回调函数结合

最灵活的做法是结合array_filter()与自定义回调函数,可精准移除null而保留0、false等值,适用于需精细控制过滤规则的场景。 在PHP中处理数组中的null值,最灵活且推荐的做法是结合使用array_filter()函数和一个自定义的回调函数。这种方式不仅能精确地移除null,还能让你根据具体业务需求,对其他被视为“空”或“无效”的值进行精细化控制,确保数据的纯净和准确性。 解决方...