2

好吧,我不仅喜欢记住代码块,还喜欢理解它们,这样我就可以自己创建它们。为什么这行得通?我不明白。如果有人可以向我解释,我将不胜感激。对我来说,它看起来像:“如果数组索引(数组中的位置)大于 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);​
4

6 回答 6

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
于 2012-10-31T21:22:10.233 回答
3
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
于 2012-10-31T21:26:47.207 回答
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'
于 2012-10-31T21:23:13.417 回答
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]。它遍历数组,每次都进行比较。

于 2012-10-31T21:24:36.677 回答
0

这将如何神奇地告诉我数组中的最高数字

它不会。因为

var largest = 0;

如果数组中的最大值是负数,那么它将虚假地报告0为最大值。例如, if var array = [-3, -4, -5, -21.15, -21, -9];thenlargest0在循环的末尾,而不是-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;
于 2012-10-31T21:32:42.413 回答
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);
}
于 2020-04-14T14:21:44.370 回答