如何修改JavaScript函数实现数组与数值的最大值比较
扩展JavaScript最大值函数,支持与指定参数比较
嘿,我来帮你搞定这个函数扩展的问题~先看看原函数存在的小问题:
- 初始把
max设为0,如果数组里全是负数,返回结果会是0,这明显不对 - 变量
b完全没被赋值,那个else if分支根本不会触发,属于无效代码
要实现支持第二个参数,让数组元素的最大值和这个参数比较后返回更大的那个,我们可以这样修改:
修改后的函数代码
function LrgstNum(array, compareVal = -Infinity) { // 处理数组为空的边界情况,可选,根据需求调整 if (array.length === 0) { return compareVal; } // 用数组第一个元素初始化max,避免负数场景的bug let max = array[0]; const arrLength = array.length; // 遍历数组找出内部最大值 for (let counter = 1; counter < arrLength; counter++) { if (array[counter] > max) { max = array[counter]; } } // 比较数组最大值和传入的第二个参数,返回更大的那个 return max > compareVal ? max : compareVal; }
测试验证
- 原有调用:
console.log(LrgstNum([55,4,6]));→ 输出55,符合预期 - 带第二个参数的调用:
console.log(LrgstNum([55,4,6], 100));→ 输出100,满足需求 - 额外测试负数场景:
console.log(LrgstNum([-5,-3,-10], -2));→ 输出-2,逻辑正确
修改要点说明
- 给函数添加第二个参数
compareVal,并设置默认值-Infinity,这样不传该参数时,原有功能完全不受影响 - 修复了原函数初始化
max的bug,改用数组第一个元素作为初始值,适配负数数组的情况 - 移除了原函数中无用的变量和无效分支,让代码更简洁清晰
- 最后增加了数组内部最大值与第二个参数的比较逻辑,返回两者中的较大值
内容的提问来源于stack exchange,提问作者Ar3f
相关产品推荐
相关产品推荐

