Javascript - 使用循环和数组查找最大值和最小值,-Infinity/Infinity

Javascript - find max and min values using loop and array, -Infinity/Infinity

有人可以向我解释一下这是如何工作的。在查找最高数方法中,每个数字都大于 -Infinity。为什么它取最高数?与最小数字查找器相同,它如何选择最小数字,所有数字都小于 Infinity。

//find highest number

var Numbers = [1, 2, 101, 45, 55, 1443];
var l = Numbers.length;
var max = -Infinity;
var i;
for (i = 0; l > i; i++) {

    if (Numbers[i] > max) {

        max = Numbers[i];

    }

}

console.info(max);

//find lowest number

var Numbers = [1, 2, 101, 45, 55, 1443];
var l = Numbers.length;
var max = Infinity;
var i;
for (i = 0; l > i; i++) {

    if (Numbers[i] < max) {

        max = Numbers[i];

    }

}

console.info(max);

关键在这里

if (Numbers[i] > max) {

    max = Numbers[i];

}

如果当前数量大于当前最大数量,那么我们将其设为最大数量。然后我们继续,直到我们遍历整个阵列。

以 -Infinity 开头确保数组中的任何值都将大于或等于它。

对于最小值,它是相同的,但我们始终保留我们在列表中找到的最小值。

Infinity 和 -Infinity 是 javascript 提供的值,它们大于或小于 Number. You can find more about them here.

类型的任何其他值

您可以调试您的代码并逐步查看到底发生了什么。在 Chrome.

中检查 this link 如何做到这一点

使用控制台,您可以看到对于最小数字 if,当 1 小于 Infinity 时,条件只有一次为真。其他时候它总是 return false 因为所有其他数字都小于 1 所以这里的逻辑是如果数组中的数字 低于 则它存储 else 循环继续循环。

最高数字相同。

//find highest number
var Numbers = [1, 2, 101, 45, 55, 1443];
var l = Numbers.length;
var max = -Infinity;
var i;
for (i = 0; l > i; i++) {
  if (Numbers[i] > max) {
    console.log(i + ' max number' + Numbers[i]);
    max = Numbers[i];
  }
}
console.info(max);

//find lowest number
var Numbers = [1, 2, 101, 45, 55, 1443];
var l = Numbers.length;
var max = Infinity;
var i;
for (i = 0; l > i; i++) {
  if (Numbers[i] < max) {
    console.log(i + ' lowest number' + Numbers[i]);
    max = Numbers[i];
  }
}
console.info(max);