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循环中的当前数组元素。如何找到最大的数字?似乎很简单,但我看不出它是如何找到最大整数的...
答案 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);