我一直在研究如何在数组中查找最小值和最大值(不使用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>
我不能真正地将它包裹住并完全理解它,尤其是无限部分。 有人会这么友善并解释得尽可能简单吗?
答案 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;
};