如何用for循环统计数组元素中的元音与辅音数量?
问题排查与修正代码
原代码存在以下关键问题,导致无法正确统计每个单词的元音和辅音数量:
- 遍历对象错误:直接将整个水果字符串与单个元音字符比较,未遍历每个单词的字符;
for...in遍历数组虽可行,但更适合用for...of直接获取数组元素。 - 计数未赋值:
vowels + 1和consonants + 1仅做数值计算,未将结果赋值回变量,无法实现计数累加,需改为vowels++或vowels += 1。 - 未处理大小写:仅检查小写元音,会漏掉单词中的大写元音(如"Apple"的首字母A)。
- 全局计数未重置:全局的
vowels和consonants会累计所有单词的数量,无法实现每个单词单独统计的需求。 - 未输出统计结果:仅打印单词,未将统计的元音、辅音数量输出到控制台。
修正后的代码
const fruits = ["Apple", "Orange", "Pear", "Peach", "Strawberry", "Cherry", "Acai"]; // 遍历每个水果单词 for (const fruit of fruits) { let vowels = 0; let consonants = 0; // 将单词转为小写,统一判断逻辑 const lowerFruit = fruit.toLowerCase(); // 遍历当前单词的每个字符 for (const char of lowerFruit) { // 判断是否为元音(a/e/i/o/u) if (["a", "e", "i", "o", "u"].includes(char)) { vowels++; } else if (/[a-z]/.test(char)) { // 仅统计英文字母中的辅音,排除特殊字符 consonants++; } } // 打印当前单词的统计结果 console.log(`${fruit}: 元音${vowels}个,辅音${consonants}个`); }
运行结果
[Running] node "d:\coding.js" Apple: 元音2个,辅音3个 Orange: 元音3个,辅音3个 Pear: 元音2个,辅音2个 Peach: 元音2个,辅音3个 Strawberry: 元音2个,辅音7个 Cherry: 元音1个,辅音4个 Acai: 元音3个,辅音1个 [Done] exited with code=0 in 0.132 seconds
内容的提问来源于stack exchange,提问作者LightningFireZC
相关产品推荐
相关产品推荐

