如何在没有返回选项的情况下在JavaScript中完成功能
我在for循环中使用函数时遇到了麻烦。首先看一下代码,请:如何在没有返回选项的情况下在JavaScript中完成功能
let list1 = [4168,3925,858,2203,440,185,2886,160,1811,4272,4333,2180,174,157,361,1555]; let max = 0;
function maximum(listNumb1) {
\t for (let i = 0; i < listNumb1.length; i++) {
\t \t if (listNumb1[i] > max) {
\t \t \t max = listNumb1[i];
\t \t \t return max;
\t \t }
\t }
}
console.log(maximum(list1));
好吧,我试图让功能会发现上面的数组中的最大数量。我没有一个函数,代码工作,但是当我想要一个函数,所以我可以用它与多个数组,我卡住了,我没有得到所需的输出。
我知道我的问题在哪里。这是回报的一部分。它停止代码执行进一步,我得到的数组的第一个数字作为输出,因为for循环在返回后停止。
我要求解决方案我应该如何结束,或者我应该使用什么而不是返回,所以我不会打破循环,函数将继续迭代通过数组中的其余数字,并且最大变量会改变,直到找到数组中最大的数字?
回答:
您需要迭代到最后,因为您不知道最后一个元素是否大于之前找到的值。
将返回值移到该函数的末尾,并使用局部变量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));
回答:
这是更好地做一个函数,将回报最大文件,而不是修改一些全局变量。
你可以做这样的事情:
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));
此功能使用Array.reduce
,谋取最大价值。
回答:
另一种方法来找到最大是spreading到Math#max:
const list1 = [4168,3925,858,2203,440,185,2886,160,1811,4272,4333,2180,174,157,361,1555]; const maximum = (arr) => Math.max(...arr);
console.log(maximum(list1));
以上是 如何在没有返回选项的情况下在JavaScript中完成功能 的全部内容, 来源链接: utcz.com/qa/257718.html