如何从整数数组获取最小/最大值?JavaScript函数实现报错求助
问题分析与解决方案
你的代码存在的问题
- 函数名不符:任务要求函数名为
minorMajor,你写成了menorMayor - 忽略传入参数:函数内硬写了固定数组
[3,7,4,2,8],完全没用到输入的num参数 - 循环逻辑错误:
num.legth是拼写错误,应为num.length;循环条件i <= num.length会导致数组越界,正确应为i < num.length - 逻辑混乱:循环内仅做了
index = num,未对数组元素进行最值比较;if语句写在函数外部,变量i无定义,且返回的是字符串而非要求的数组 - 变量未声明:
index等变量未用let/const声明,会造成全局变量污染
正确实现方法
方法1:手动遍历数组(基础版)
手动遍历数组,实时更新当前最小值和最大值,最后返回目标数组:
function minorMajor(numbers) { // 处理空数组边界情况 if (numbers.length === 0) return []; // 初始化最值为数组第一个元素 let min = numbers[0]; let max = numbers[0]; // 从第二个元素开始遍历比较 for (let i = 1; i < numbers.length; i++) { if (numbers[i] < min) { min = numbers[i]; } if (numbers[i] > max) { max = numbers[i]; } } return [min, max]; } // 测试示例 console.log(minorMajor([4, 6, 1, 7, 15])); // 输出 [1, 15]
方法2:使用内置API(简洁版)
利用JS内置的Math.min和Math.max结合扩展运算符,快速获取最值:
function minorMajor(numbers) { if (numbers.length === 0) return []; return [Math.min(...numbers), Math.max(...numbers)]; } // 测试示例 console.log(minorMajor([4, 6, 1, 7, 15])); // 输出 [1, 15]
注意事项
- 若需要兼容空数组场景,务必先判断
numbers.length === 0,避免运行报错 - 尽量保持函数名、参数名与任务描述一致,提升代码可读性
内容的提问来源于stack exchange,提问作者Legion
相关产品推荐
相关产品推荐

