这是如何工作的:使用for循环查找数组中的最大数字

时间:2012-10-31 21:19:31

标签: javascript

嗯,我喜欢不仅记住代码块,而是要了解它们,以便我自己创建它们。为什么这样做?我不明白。如果有人能向我解释,我将非常感激。对我来说,它看起来像:“如果数组索引(数组中的位置)大于0,0 =数组索引,”那将如何神奇地告诉我数组中的最高数字我没有一个线索。我试过寻找答案,但没有运气。这是代码的一个例子,提前感谢:

var array = [3, 4, 5, 21.15, 21, 9];
var largest = 0;

for (i = 0; i < array.length; i++) {
    if (array[i] > largest) {
        largest = array[i];
    }
}
console.log(largest);​

6 个答案:

答案 0 :(得分:6)

largest = array[i];并不代表0 = array[i]largest是一个变量,因此每当您到达largest = array[i];行时,您更改 largest的值为当前array[i]

这就是你最后得到数组最大值的原因。

示例:a = [1, 3, 7, 2]

您初始化largest = 0。对于数组的每个元素,您执行以下操作:

largest < 1? yes, so largest = 1
largest < 3? yes, so largest = 3
largest < 7? yes, so largest = 7
largest < 2? no, so do nothing

答案 1 :(得分:2)

 largest = array[i]; //Assign whatever is at the position 'i' in the array
                     //to the variable 'largest'

 if (array[i]>largest) // See if the value at the position 'i' in the array
                        //is greater than what is contained in the variable 'largest'

答案 2 :(得分:1)

添加另一个console.log语句,它会更清晰。

var array = [3, 4, 5, 21.15, 21, 9];
var largest = 0;

    for (i=0; i<array.length; i++) {
    if (array[i]>largest) {
        console.log(largest + " " + array[i]);
        largest = array[i];
    }
}
console.log(largest);

给出输出

  

0 3

     

3 4

     

4 5

     

5 21.15

     

21.15

如果array[i]大于largest的当前值,则largest会覆盖array[i]的值。它循环遍历数组,每次进行比较。

答案 3 :(得分:1)

var array = [3, 4, 5, 21.15, 21, 9];
var largest = 0;

    for (i=0; i<array.length; i++) {
    if (array[i]>largest) {
        largest = array[i];
    }
}
console.log(largest);

Iteration 1:
Check if array[0] i.e. 3 is greater than 0 => True : largest = 3

Iteration 2:
Check if array[1] i.e. 4 is greater than 3 => True : largest = 4

Iteration 3:
Check if array[2] i.e. 5 is greater than 4 => True : largest = 5

Iteration 4:
Check if array[3] i.e. 21.25 is greater than 5 => True : largest = 21.25

Iteration 5:
Check if array[4] i.e. 21 is greater than 21.25 => False: largest = 21.25

Iteration 6:
Check if array[5] i.e. 9 is greater than 21.25 => False: largest = 21.25

答案 4 :(得分:0)

  

怎么会神奇地告诉我数组中的最高数字

不会。因为

var largest = 0;

如果数组中的最大值为负数,那么它将虚假地报告0作为最大值。例如,如果var array = [-3, -4, -5, -21.15, -21, -9];,那么largest将在循环结束时为0,而不是-3

如果没有与数组中的数字具有明显可比性的值,则下面应该做得更好,并返回undefined

var greatestIndex = -1;
for (var i = 0, n = array.length; i < n; ++i) {
  if (greatestIndex >= 0 ? array[i] > array[greatestIndex] : array[i] >= -Infinity) {
    greatestIndex = i;
  }
}
return greatestIndex >= 0 ? array[greatestIndex] : undefined;

答案 5 :(得分:0)

如果您将变量“ maxNumber”设置为最初等于最小的可能数字,然后运行“ for循环”,则在其中检查字符串中的每个下一个数字是否都大于初始值,然后覆盖当前的当前值。输入的值超过初始值,它将最终通过检查每个当前数字与前一个数字并记录最高数字来遍历数组。

function solve(input) {
    let count = +input.shift();
    let maxNumber = Number.MIN_SAFE_INTEGER;

    for (let i = 0; i <= count; i++) {
        let number = +input.shift();
        if (number > minNumber) {
            mmaxNumber = number;
        }
    }
console.log(maxNumber);
}