编写的JavaScript函数无法返回最短单词长度,请求问题排查
代码问题分析与修正
问题出在这几个地方:
- 关键变量
word的定义被注释了:原代码里var word = s.split(' ')是注释状态,这会直接导致word未定义报错;就算你实际测试时解开了注释,后面的逻辑还有问题。 - 错误用
parseInt处理长度数组:word.map(a => a.length)会生成一个存所有单词长度的数组(比如输入"a bc def"会得到[1,2,3]),但parseInt处理数组时,会先把数组转成字符串(比如"1,2,3"),然后只提取第一个有效数字返回,所以result就变成了第一个单词的长度。 - 无效的双
return:第一个return result直接终止了函数,后面那句return Math.min(result)根本不会执行,自然没法算出最短长度。
修正后的代码:
function findShort(s){ // 分割字符串为单词数组,再映射成每个单词的长度数组 const wordLengths = s.split(' ').map(word => word.length); // 用扩展运算符把数组元素展开,传入Math.min取最小值 return Math.min(...wordLengths); }
简单说明:
s.split(' ')把输入字符串按空格拆成单词数组;.map(word => word.length)把每个单词转换成对应的长度,得到长度数组;Math.min(...wordLengths)通过扩展运算符把数组元素一个个传给Math.min,直接拿到数组里的最小值,也就是最短单词的长度。
内容的提问来源于stack exchange,提问作者Kestone Dennis
相关产品推荐
相关产品推荐

