You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写JavaScript函数hasVowels判断字符串是否包含元音?

修正hasVowels函数方案

需求明确

函数hasVowels需满足:

  • 接收单个字符串参数
  • 字符串包含任意元音字母(a、e、i、o、u,不区分大小写)时返回true,否则返回false

原函数问题分析

原代码的核心错误:

  1. 参数定义错误:测试用例传入的是单个字符串,但原函数定义了5个参数,完全不匹配调用逻辑
  2. 返回逻辑无效:return (a, e, i, o, u) 使用逗号运算符,仅返回最后一个参数u的值,无法实现元音判断

正确实现方案

方案1:正则表达式(简洁高效)

利用正则表达式的test()方法快速匹配元音,i修饰符实现大小写不敏感匹配:

function hasVowels(str) {
  return /[aeiou]/i.test(str);
}
  • /[aeiou]/i 匹配任意大小写的元音字母
  • test()方法直接返回布尔值,表示字符串是否包含匹配项

方案2:遍历字符检查(适合新手理解)

手动遍历字符串每个字符,与元音集合对比:

function hasVowels(str) {
  const vowels = new Set(['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']);
  for (const char of str) {
    if (vowels.has(char)) {
      return true;
    }
  }
  return false;
}
  • 使用Set存储元音,has()方法的查找效率比数组includes()更高
  • 找到元音立即返回true,遍历结束未找到则返回false

测试验证

替换原函数后,所有测试用例均可通过:

  • hasVowels("banana") → true
  • hasVowels("ubuntu") → true
  • hasVowels("QQQQ") → false
  • hasVowels("wyrd") → false

内容的提问来源于stack exchange,提问作者Gail Cruz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:35:18