【问题标题】:Explain: Min/Max array with infinity说明:具有无穷大的最小/最大数组
【发布时间】:2019-02-27 05:11:32
【问题描述】:

我正在研究如何在数组中找到最小值和最大值(不使用数学),我在一个论坛中遇到了this code

var array = [4, 2, 3, 4]
var min = arrayMin(array);
out.innerHTML = min;

function arrayMin(arr) {
  var len = arr.length, min = Infinity;
  while (len--) {
    if (arr[len] < min) {
      min = arr[len];
    }
  }
  return min;
};
&lt;p id="out"&gt;&lt;/p&gt;

我真的无法完全理解它,尤其是无穷大部分。 有人能这么好,并尽可能简单地解释吗?

【问题讨论】:

  • 除了无穷大部分你不明白什么
  • 变量min 跟踪目前看到的最小值。当数组中的值小于该值时,它将成为新的最小值。
  • 老实说,这主要是无穷大。 @ashishsingh
  • out.innerHTML = min; line 外,一切都按预期进行
  • 一个很好的解决方法是使用第一个元素并从索引一个开始运行循环。

标签: javascript arrays max min infinity


【解决方案1】:

逻辑似乎很好。您添加的代码给出了最小值。 min 被初始化为 Infinity 并且 min 在你遍历数组时被更新。

让我们看看第一个数组元素会发生什么。

4 < Infinity //index = 0 min becomes 4
2 < 4 //index = 1 min becomes 2

以此类推,代码会输出最小值。

【讨论】:

    【解决方案2】:

    Infinity 是全局对象的属性,或者换句话说,是全局范围内的变量。

    Infinity 的初始值为 Number.POSITIVE_INFINITY。值 Infinity(正无穷大)大于任何其他数字。在数学上,这个值的行为与无穷大相同;例如,任何正数乘以 Infinity 等于 Infinity,任何数字除以 Infinity 等于 0。

    因此,上述函数所做的是创建一个名为min 的临时变量,用于跟踪最小的数字。当进行第一次比较时,它将每次覆盖min 的值,因为Infinity 高于任何其他数字。然后,它继续遍历数组进行相同的评估,直到它退出。

    这是一个内联 sn-p 演示它是如何工作的:

    var array = [4, 2, 3, 4]
    var min = arrayMin(array);
    
    function arrayMin(arr) {
      var len = arr.length, min = Infinity;
      while (len--) {
        console.log(min);
        if (arr[len] < min) {
          min = arr[len];
        }
      }
      return min;
    };

    You can read more about Infinity here.

    【讨论】:

      猜你喜欢
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-12
      • 2012-01-28
      • 1970-01-01
      • 2019-05-27
      • 2021-01-03
      相关资源
      最近更新 更多