如何在没有返回选项

时间:2017-12-02 18:38:45

标签: javascript function for-loop return

我在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;
&#13;
&#13;

好的,我正在尝试创建能够找到上面数组中最大数字的函数。我没有功能,代码工作,但是当我想创建一个函数,所以我可以使用它与多个数组,我卡住了,我没有得到所需的输出。

我知道我的问题在哪里。这是回归部分。它阻止代码进一步执行,我得到数组的第一个数字作为输出,因为for循环在返回后停止。

我要求解决方案我应该如何结束,或者我应该使用什么而不是返回,所以我不会打破循环,并且函数将继续迭代通过数组中的其余数字,并且max变量将改变直到它找到数组中的最大数字?

3 个答案:

答案 0 :(得分:2)

你需要迭代到最后,因为你不知道最后一个元素是否大于之前找到的值。

将返回值移动到函数的末尾,并使用局部变量max来保持临时最大值。

一个好主意是从数组的第一个元素开始作为max的值,并从索引1开始迭代。

&#13;
&#13;
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;
&#13;
&#13;

答案 1 :(得分:0)

最好创建一个返回最大文件的函数,而不是修改一些全局变量。

你可以这样做:

&#13;
&#13;
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;
&#13;
&#13;

此功能使用Array.reduce来寻找最大值。

答案 2 :(得分:0)

找到最大值的另一种方法是spreadingMath#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));