JavaScript:getCapitals函数返回结果不符合预期的问题排查
修正getCapitals函数以返回大写字母数组
原代码存在两个核心问题,导致输出不符合预期:
- 错误地将结果容器初始化为包含空字符串的数组
[''],而非空数组[]。当对数组使用+=操作符时,数组会被隐式转换为字符串([''].toString()结果为空字符串),后续拼接大写字母会生成字符串,而非数组元素集合。 - 使用
+=来添加元素的方式错误,这会触发数组到字符串的类型转换,最终返回的是拼接后的字符串,而非目标数组。
修正后的代码
function getCapitals(string) { var result = []; for (var i = 0; i < string.length; i++) { if (string[i] === string[i].toUpperCase()) { result.push(string[i]); } } return result; } console.log(getCapitals("Madjbaj Avveyhe")); // 输出 ["M", "A"]
更简洁的实现方式
你也可以利用数组的高阶函数简化代码逻辑:
function getCapitals(string) { return string.split('').filter(char => char === char.toUpperCase()); }
内容的提问来源于stack exchange,提问作者Irina Turetskaya
相关产品推荐
相关产品推荐

