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

JavaScript获取指定数量单词并统计元音字符数功能异常排查

修复你的元音统计代码问题

我帮你排查出了代码里的几个关键问题,修复后就能正确统计每个单词的元音数量了:

问题分析

  • 致命错误:未调用字符串转换方法
    你写的stringWordList = wordList[i].toString里,toString是一个方法,必须加括号()才能执行并获取字符串值。现在你把函数本身传给了getVowels,正则自然匹配不到任何字符,结果全是0。
  • 未声明循环变量
    两个for循环里的i都没有用let/var声明,会变成全局变量,在复杂场景下容易引发逻辑混乱。
  • 多余的语法符号
    注释掉的vowelCount函数后面多了一个},虽然被注释了,但会导致语法报错,需要删掉。

修复后的完整代码

let n = prompt('Enter the number:');
let wordList = [];
let vowelCounter = [];
let stringWordList = '';

// 收集n个单词,循环变量i用let声明避免全局污染
for (let i = 0; i < n; i++) {
  wordList.push(prompt((i + 1) + ' Word #'))
}

function getVowels(str) {
  var m = str.toString().match(/[aeiou]/gi);
  return m === null ? 0 : m.length;
};

// 删掉多余的闭合括号,避免语法报错
// /*function vowelCount(str) {
//   return str.toString().replace(/[^aeiou]/gi, "").length;*/

// 统计元音,修复toString调用问题
for (let i = 0; i < n; i++) {
  stringWordList = wordList[i].toString();
  vowelCounter.push(getVowels(stringWordList));
  console.log(wordList[i] + ':' + vowelCounter[i]);
}

额外优化建议

其实wordList里的元素本身就是prompt返回的字符串,不需要额外调用toString(),可以简化成:

for (let i = 0; i < n; i++) {
  vowelCounter.push(getVowels(wordList[i]));
  console.log(wordList[i] + ':' + vowelCounter[i]);
}

这样代码更简洁,也减少了出错的可能性。

内容的提问来源于stack exchange,提问作者sina jabbarpour

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 20:42:34