我在for循环中使用函数时遇到了麻烦。首先看一下代码:
let list1 = [4168,3925,858,2203,440,185,2886,160,1811,4272,4333,2180,174,157,361,1555];
let max = 0;
function maximum(listNumb1) {
for (let i = 0; i < listNumb1.length; i++) {
if (listNumb1[i] > max) {
max = listNumb1[i];
return max;
}
}
}
console.log(maximum(list1));
&#13;
好的,我正在尝试创建能够找到上面数组中最大数字的函数。我没有功能,代码工作,但是当我想创建一个函数,所以我可以使用它与多个数组,我卡住了,我没有得到所需的输出。
我知道我的问题在哪里。这是回归部分。它阻止代码进一步执行,我得到数组的第一个数字作为输出,因为for循环在返回后停止。
我要求解决方案我应该如何结束,或者我应该使用什么而不是返回,所以我不会打破循环,并且函数将继续迭代通过数组中的其余数字,并且max变量将改变直到它找到数组中的最大数字?
答案 0 :(得分:2)
你需要迭代到最后,因为你不知道最后一个元素是否大于之前找到的值。
将返回值移动到函数的末尾,并使用局部变量max
来保持临时最大值。
一个好主意是从数组的第一个元素开始作为max
的值,并从索引1
开始迭代。
function maximum(array) {
var max = array[0],
i;
for (i = 1; i < array.length; i++) {
if (array[i] > max) {
max = array[i];
}
}
return max;
}
let list1 = [4168, 3925, 858, 2203, 440, 185, 2886, 160, 1811, 4272, 4333, 2180, 174, 157, 361, 1555];
console.log(maximum(list1));
&#13;
答案 1 :(得分:0)
最好创建一个返回最大文件的函数,而不是修改一些全局变量。
你可以这样做:
let list1 = [4168, 3925, 858, 2203, 440, 185, 2886, 160, 1811, 4272, 4333, 2180, 174, 157, 361, 1555];
function findMax(list) {
return list.reduce((currentMax, currentNumber) => {
return Math.max(currentNumber, currentMax);
}, 0);
}
console.log(findMax(list1));
&#13;
此功能使用Array.reduce
来寻找最大值。
答案 2 :(得分:0)