JavaScript:统计数组中大于60元素的最大连续个数及代码疑问
问题分析与解决方案
首先,你代码里的break语句必须删掉——它会让循环只执行第一次迭代就直接终止,根本没法遍历整个数组统计连续出现的次数,这是导致逻辑完全错误的核心原因。
除此之外,你的代码还有两个关键问题:
- 数组元素是字符串类型,直接和数字
60比较存在隐患(比如字符串'100'和'60'比较时,会因为字符编码顺序得到'100' < '60'的错误结果),需要先转换为数字再判断。 - 当前逻辑是统计所有大于60的元素总数,而非连续出现的最大次数,需要额外变量分别追踪当前连续次数和历史最大次数。
修正后的代码
let arr = ['80', '70', '11', '88', '90', '61']; function processInput(arr) { let maxCount = 0; let currentCount = 0; for (let i = 0; i < arr.length; i++) { const num = Number(arr[i]); if (num > 60) { currentCount++; // 更新最大连续次数 if (currentCount > maxCount) { maxCount = currentCount; } } else { // 连续被打断,重置当前计数 currentCount = 0; } } return maxCount; } console.log(processInput(arr)); // 输出3
逻辑说明
maxCount:始终记录遍历过程中遇到的最大连续符合条件的次数。currentCount:记录当前正在连续的符合条件的元素个数,遇到不符合条件的元素时重置为0。- 每次遍历元素时,先转换为数字,判断是否大于60:
- 符合条件则递增
currentCount,并检查是否需要更新maxCount。 - 不符合条件则重置
currentCount,因为连续序列被打断。
- 符合条件则递增
内容的提问来源于stack exchange,提问作者user17647007
相关产品推荐
相关产品推荐

