【问题标题】:Javascript - find max and min values using loop and array, -Infinity/InfinityJavascript - 使用循环和数组查找最大值和最小值,-Infinity/Infinity
【发布时间】:2015-10-09 16:55:32
【问题描述】:

有人可以向我解释这是如何工作的吗?在查找最高数字方法中,每个数字都大于 -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);

【问题讨论】:

    标签: javascript arrays loops numbers


    【解决方案1】:

    关键在这里。

    if (Numbers[i] > max) {
    
        max = Numbers[i];
    
    }
    

    如果当前数字大于当前最大数字,则我们将其设为最大数字。我们继续,直到我们遍历整个数组。

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

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

    Infinity 和 -Infinity 是 javascript 提供的值,它们大于或小于 Number 类型的任何其他值。你可以找到更多关于他们的信息here

    您可以调试您的代码,并逐步准确地查看发生了什么。查看this link,了解如何在 Chrome 中执行此操作。

    【讨论】:

    • ahhhhh,我现在明白了,每次 1 个循环结束时,max 都有新值,并且取决于它是否更大/更小以及它会改变的箭头方向
    • 是的,调试很清楚。或者只是尝试在每次 for 循环时打印 i 和最大值。 :)
    • 答案太明显了,看了这么久,哈哈!非常感谢您清除它! ;d
    • @JakubMazurkiewicz np,这就是这个网站的用途。检查 Sarjan 关于如何记录值的示例的答案。 :)
    【解决方案2】:

    使用控制台,您可以看到对于最小数字if,当1 小于Infinity 时,该条件仅成立一次。其他时候它总是返回 false,因为所有其他数字都小于 1 所以这里的逻辑是如果数组中的数字 低于 大于 max 然后它存储 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);

    【讨论】:

    • 数组中的数字不是升序排列的。同样的数组也用于最小值,所以这没有任何意义。 :)
    猜你喜欢
    • 2021-06-17
    • 2018-09-21
    • 2019-09-18
    • 2022-09-29
    • 2013-10-05
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 2016-06-07
    相关资源
    最近更新 更多