如何在 JavaScript 中检查元音?

2023-12-26

我应该编写一个函数,它接受一个字符(即长度为 1 的字符串),如果它是元音则返回 true,否则返回 false。我想出了两个函数,但不知道哪一个性能更好以及我应该更喜欢哪种方式。使用 RegEx 的方法要简单得多,但我不确定是否应该尝试避免使用 RegEx?

没有正则表达式:

function isVowel(char) {
  if (char.length == 1) {
    var vowels = new Array("a", "e", "i", "o", "u");
    var isVowel = false;

    for (e in vowels) {
      if (vowels[e] == char) {
        isVowel = true;
      }
    }

    return isVowel;
  }
}

使用正则表达式:

function isVowelRegEx(char) {
  if (char.length == 1) {
    return /[aeiou]/.test(char);
  }
}

基准 http://jsperf.com/regex-vs-for-loop

我认为你可以有把握地说 for 循环更快。

我确实承认正则表达式在代码方面看起来更干净。如果这是一个真正的瓶颈,那么使用 for 循环,否则出于“优雅”的原因坚持使用正则表达式

如果您想简单一点,那么只需使用

function isVowel(c) {
    return ['a', 'e', 'i', 'o', 'u'].indexOf(c.toLowerCase()) !== -1
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 JavaScript 中检查元音? 的相关文章

随机推荐

  • 与加法的连接不能按预期工作

    这是我的带有 SQL 查询的 PHP 代码 但输出不符合预期 sql INSERT INTO event footers event id order file id url VALUES foreach all footers as ke
  • 反应路由器引导链接容器

    如何使用react router bootstrap链接到另一个react组件 我需要先使用react router 设置路由吗 我不知道如何使用react router bootstrap的LinkContainer将NavItem路由到
  • Visual Studio 输出窗口不显示 Debug.Write() 发送的消息

    我正在试用模式下使用 Visual Studio 2010 Professional 突然输出窗口不会显示我的调试 Write http msdn microsoft com en us library system diagnostics
  • GDB 打印到文件而不是标准输出

    我正在运行 GDB 并想检查那些不幸的上帝对象之一 需要很多页 我有一台 24 英寸显示器横转 才能看到整个内容 为了便于使用 我希望 GDB 将对象打印到文件而不是屏幕上 以便我可以在 vi 中打开它并轻松移动 凭借 GDB 的多功能性
  • 配置高精度(亚秒)Windows 时间

    http time is http time is 即使我刚刚强制将 Windows 时钟与某些 Internet 时间服务器 例如 time windows com 或 time nist gov 同步 也会不断报告我的系统时钟慢了几秒
  • 我如何让 ui-router 转到外部链接,例如 google.com?

    例如 stateProvider state external url http www google com url 假定这是一个内部状态 我希望它像 href 或类似的东西 我有一个将从 ui routes 构建的导航结构 并且我需要一
  • MacOS 应用程序沙盒 - 从解析的 xml 读取引用文件的访问权限

    Aim 无需用户直接选择文件即可获得对应用程序沙箱环境之外的文件的读取访问权限 这个想法是 用户选择一个 fcpxml 文档 通过 NSOpenPanel 然后对其进行解析并收集所有文件路径字符串 然后 我从文件路径创建 URL 对象 并稍
  • 如何在运行时将可观察集合绑定到多个用户控件?

    我陷入了必须将集合绑定到动态用户控件的部分 场景是这样的 我有一个动态控件 有一个扩展器 数据网格 组合框和文本框 其中组合框和文本框位于数据网格内 他们已经有两个收藏品了 一个与组合框绑定 另一个与数据网格绑定 当组合框中的项目发生更改时
  • jQuery 按键事件等待 0.5 秒等待另一个用户按键

    我目前正在为我的网站开发实时搜索 我想用一些简单的 jQuery 来减少一些不必要的请求 当然我有一个后端洪水控制 我的搜索字段有一个 keydown 事件侦听器 该侦听器当前仅在以下情况下触发 PHP 搜索功能的 ajax 命令 val
  • 如何在Tensorflow中导入keras.engine.topology?

    我想在 Tensorflow 中导入 keras engine topology 如果我想使用 Tensorflow 版本的 Keras 我曾经在每个 Keras 导入的开头添加单词 tensorflow 例如 而不是写 from kera
  • 检测 iPhone 中两个移动按钮的碰撞

    我正在使用下面的函数来移动屏幕上的两个按钮 void animateWithDuration NSTimeInterval duration delay NSTimeInterval delay options UIViewAnimatio
  • Java 修饰符(abstract、final、public、static 等)的合理顺序是什么?

    Java 修饰符的合理顺序是什么 abstract final native private 受保护的 public static strictfp 同步的 短暂的 volatile Update 我已经改变了措辞受到推崇的 to 合理的为
  • 在 Spring Boot 应用程序运行时更改日志记录级别

    我正在尝试在 Spring Boot 应用程序运行时更改日志记录级别 从 DEBUG 到 ERROR 或 WARN 代码如下 我已关注以下帖子 但仍然发布更改日志记录级别的请求不起作用 请查看下面的请求 但应用程序没有响应 我也没有在日志中
  • Page.IsValid 总是返回 false

    我在按钮上进行了验证 我正在检查Page IsValid在 C 代码中 但它总是返回错误值 这是帮助我调试问题的代码片段 foreach BaseValidator validator in Page Validators if valid
  • APPS SCRIPT - 从文件夹 ID 数组中获取 URL 和文件名

    我想从文件夹 ID 数组中获取文件 URL 和名称 我正在使用脚本进行重试 我希望将结果放置在 文件 选项卡上 我用来获取 filesID 的脚本如下 function Folders URL var ss SpreadsheetApp g
  • 旅游网站如何锁房? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在开发一个酒店预订系统 PHP
  • 在 codeigniter 中设置基本 url

    我在 codeigniter 中有这样的目录结构 Appsite website application images 当我访问 index php 中的图像时 我使用了 img src http localhost Appsite web
  • 在 Jetty 中嵌入 Apache ZooKeeper 生成调试日志消息

    我正在使用 Jetty 8 和 ZooKeeper 3 4 5 当我连接到 ZooKeeper 时 jetty 不断生成 DEBUG 级别消息 怎么抑制呢 16 54 56 757 main SendThread 127 0 0 1 218
  • Excel 2010选择一行中的每个单元格,逐个激活它们

    我有一个 XML 文件 将其放入 Excel 中以使其自动生成表格 第一列 A 有名称 第二列 B 有日期 还有一些专栏 但这些与这个问题无关 所以它看起来像这个截图 现在 Excel 2010 中有一个非常愚蠢的错误 当我有数据列时 我将
  • 如何在 JavaScript 中检查元音?

    我应该编写一个函数 它接受一个字符 即长度为 1 的字符串 如果它是元音则返回 true 否则返回 false 我想出了两个函数 但不知道哪一个性能更好以及我应该更喜欢哪种方式 使用 RegEx 的方法要简单得多 但我不确定是否应该尝试避免