说明:最小/最大无限数组

时间:2018-09-23 13:36:27

标签: javascript arrays max min infinity

我一直在研究如何在数组中查找最小值和最大值(不使用Math),并且在论坛上遇到了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;
};
<p id="out"></p>

我不能真正地将它包裹住并完全理解它,尤其是无限部分。 有人会这么友善并解释得尽可能简单吗?

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:1)

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

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

因此,以上功能正在执行的操作是创建一个名为min的临时变量,该变量跟踪最小的数字。进行第一次比较时,由于min高于任何其他数字,因此每次都会覆盖Infinity的值。然后,它将继续遍历数组进行相同的评估,直到退出为止。

以下是一个内联代码段,演示了其工作原理:

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