JS求取数组最大值最小值输出为1,1 错误排查及缺失内容问询
问题定位
你的代码核心问题是数组长度属性拼写错误:
- 你写的是
arr.lenght,JavaScript中数组长度的正确属性名是arr.length - 拼写错误导致
arr.lenght返回undefined,循环条件i < undefined永远为假,循环体完全没有执行,max和min一直保留初始赋值的数组第一个元素1,所以最终输出都是1。
修正后代码
var arr = [1,4,6,3]; function maxAndMin(arr) { var max = arr[0]; var min = arr[0]; // 修正length拼写错误 for(var i=0; i < arr.length; i++) { if(arr[i] > max) { max = arr[i]; } if(arr[i] < min) { min = arr[i]; } } console.log("Max:",max,"Min:",min); } maxAndMin(arr);
运行后输出结果为:Max: 6 Min: 1
可选优化说明
如果不想手写遍历,也可以直接用JS内置API简化实现:
const max = Math.max(...arr); const min = Math.min(...arr);
使用前建议先判断数组是否为空,避免空数组访问元素返回undefined的异常问题。
内容的提问来源于stack exchange,提问作者A.kumar
相关产品推荐
相关产品推荐

