有人可以解释一下如何找到最大数量吗?

时间:2019-06-25 21:06:36

标签: javascript

var myArray = [1, 12, 3, 5, 6];
var maxValue = null;
for (var i = 0; i < myArray.length; i++) {
    if (maxValue === null || maxValue < myArray[i]) {
        maxValue = myArray[i];
    }
}
// shows 12

我看到它遍历myArray并检查maxValue是否等于null(它是?)或maxValue是否小于当前数组元素(它也是?),然后将maxValue分配给for循环中的当前数组元素。如何找到最大的数字?似乎很简单,但我看不出它是如何找到最大整数的...

3 个答案:

答案 0 :(得分:0)

让我们反复讨论这个问题。我们将maxValue变量设置为null。在第一次迭代中,maxValue将保存myArray [0]的值为1。它将在下一次迭代中将1与myArray [1]比较。由于myArray [1]大于maxValue,因此maxValue的值将为12。现在所有其他组件都小于maxValue,并且maxValue不再为null。因此,迭代结束时maxValue的值为12。

答案 1 :(得分:0)

将初始值替换为0并删除null测试,使其更易于阅读。添加console.log可以跟踪循环的执行。

var myArray = [1, 12, 3, 5, 6];
var maxValue = 0;
for (var i = 0; i < myArray.length; i++) {
    console.log( i, myArray[i], maxValue );
    if (maxValue < myArray[i]) {
        maxValue = myArray[i];
    }
}
// shows 12

答案 2 :(得分:0)

更好的方法是直接使用第一个值并从第二个索引进行迭代,而无需使用占位符,例如null(每次迭代都需要检查此值)或-Infinity值。

var array = [1, 12, 3, 5, 6],
    max = array[0],
    i;

for (i = 1; i < array.length; i++) {
    if (max < array[i]) {
        max = array[i];
    }
}

console.log(max);