如何将数组字符串中的元音字母转为大写?求代码修正方案
问题解决:将字符串中的元音字母转为大写
原代码的问题
- 使用
for...in遍历数组时,item获取的是数组索引而非元素,导致处理对象完全错误。 - 变量名拼写错误:
vogals应为定义好的vowels。 - 未遍历字符串的单个字符,无法实现逐个元音字母的转换逻辑。
方案一:字符遍历处理
let arr = ['1 abcde', '2 abcde', '3 abcde']; const vowels = new Set(['a','e','i','o','u']); const result = arr.map(str => { return str.split('').map(char => { return vowels.has(char) ? char.toUpperCase() : char; }).join(''); }); console.log(result); // 输出: ['1 AbCdE', '2 AbCdE', '3 AbCdE']
逻辑说明:
- 用
map遍历数组每个字符串,避开for...in的索引陷阱。 - 将字符串拆分为字符数组,逐个判断是否为元音(用
Set存储元音可提升查找效率)。 - 元音字母转大写,其他字符保持原样,最后拼接回完整字符串。
方案二:正则表达式简化实现
let arr = ['1 abcde', '2 abcde', '3 abcde']; const result = arr.map(str => str.replace(/[aeiou]/g, match => match.toUpperCase())); console.log(result); // 输出预期结果
逻辑说明:
- 正则
/[aeiou]/g全局匹配所有小写元音字母。 - 替换回调将匹配到的元音转为大写,一行代码完成转换。
内容的提问来源于stack exchange,提问作者Eduardo S
相关产品推荐
相关产品推荐

