JavaScript中实现单参数数组最长字符串返回函数
解决数组中最长字符串的问题
先帮你梳理下代码里的几个关键问题,这些小错误导致它没法正常运行:
- 函数参数用了
[strs]解构写法,这会让函数只取传入数组的第一个元素,而不是接收整个数组,应该直接用strs作为参数 - 函数内部重新定义了
strs变量,还写错了数组里的逗号("afrec" "aaa"这里缺个逗号),这完全覆盖了传入的参数,违背了“接受一个参数”的需求 if语句缺少开头的括号,属于语法错误- 循环里重复声明
lgth变量,会导致变量作用域混乱
下面是修正后的代码,完全符合你的需求:
function longestString(strs) { // 处理空数组或非数组输入的情况,避免报错 if (!strs || strs.length === 0) { return ""; } var lgth = 0; var longest; for (var i = 0; i < strs.length; i++) { // 找到更长的字符串时,更新记录的长度和对应字符串 if (strs[i].length > lgth) { lgth = strs[i].length; longest = strs[i]; } } return longest; }
代码说明:
- 函数接收一个数组参数
strs,不再硬编码内部数组,这样可以灵活传入任何字符串数组 - 增加了空输入的判断,防止传入空数组或非数组值时出现报错
- 修复了
if语句的语法错误,去掉了循环里重复的var声明 - 遍历过程中,只有当前字符串长度大于记录的最大长度时才更新结果,这样能保证第一个出现的最长字符串被保留下来
你可以测试下这个函数:
console.log(longestString(["afrec", "aaa", "tummdor"])); // 输出 "tummdor" console.log(longestString(["cat", "elephant", "dog", "giraffe"])); // 输出 "elephant"(第一个最长项) console.log(longestString([])); // 输出 ""
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

