Javascript 为什么-无穷大就像是比较数字以返回最大值的基础?
在这段代码中,我似乎无法理解为什么无穷大的行为像一个基数,所以当与之相比时,它从一个数字数组中返回最大的数字Javascript 为什么-无穷大就像是比较数字以返回最大值的基础?,javascript,loops,infinity,Javascript,Loops,Infinity,在这段代码中,我似乎无法理解为什么无穷大的行为像一个基数,所以当与之相比时,它从一个数字数组中返回最大的数字 function max(...numbers) { let result = -Infinity; for (let number of numbers) { if (number > result) result = number; } return result; } 一开始会让人困惑,在您的脑海中,解决方案可能是这样的: let res
function max(...numbers) {
let result = -Infinity;
for (let number of numbers) {
if (number > result) result = number;
}
return result;
}
一开始会让人困惑,在您的脑海中,解决方案可能是这样的:
let result = 0;
问题是,当我们想要找到数组的最大值时,我们需要将每个元素相互比较。这更像是一种“习惯”,我们将最大值设为无穷大。这仅仅意味着迄今为止最大的元素是我们能表达的最低可能数。这有意义吗?我们只是简单地假设,我们能找到的最大数字是-无穷大。然后我们将数组中的元素与这个基数(在我们的例子中是无穷大)进行比较,如果我们为假(很可能是),那么我们将用下一个大于当前值的数字替换为无穷大。我们对整个数字范围都这样做,这就是我们找到最大元素的方法
您可以选择多个元素作为起点,但决不能选择您自己输入的数字(只有在练习要求时,您才应该这样做)。
例如,如果您选择:
let result = 0;
那你可能会有问题。可能这些数字都是负数,例如[-3,-13,-5,13,-99],但是您已经将最大的数字设置为0,因此每次比较都是错误的,没有用的
因此,请记住,这是一种很好的做法,在本例中,将基值设置为-Infinity,或者如果您想采用另一种方法,则将基值设置为数组中的第一个元素。除
-Infinity
之外的所有数字都是-Infinity
,对于任何数字,如4,5,3,2,3,233332,那么,当我在这个特定数组中给你的所有数字都为真时,这个数字将被分配到结果中,而这个值-Infinity
用于启动这个过程。一旦发现数组中的另一个数字大于起始值(-Infinity
),则结果将具有不同的值。因此,在循环结束时,result
将是数组中找到的最大值。只有当整个数组由-无穷
值组成时,这才是最终返回的结果。我没有注意到结果将被重新分配给下一个值,因此比较将与数组的数量循环。谢谢,起始值也可能类似于null
,这将使比较稍微复杂一些,但可能更容易理解。