我没有得到最小值,它显示0,但在这种情况下,Math.max(),它显示正确的最大值。为什么会这样呢?
function values(ar) {
var min_val = 0;
for(var i = 0; i < ar.length; i++) {
min_val = Math.min(min_val,ar[i]);
}
document.write(min_val);
}
values([14,99, 10, 18,19, 11, 34]);
它总是返回0,因为您将它与min_val进行比较。其中min_val成为最低值,因为0比数组中的任何值都小。因此,min_val将始终被设置为等于自身并保持为0。下面是我的修复:
let ar =[14,99,10,18,19,11,34]
let min_val = Math.min(...ar)
console.log(min_val)
这也比for循环更优雅。
对于你期望的行为,为了找到最小值,你想从绝对最大值(无穷大)开始。
var min_val = Infinity;
for(var i = 0; i < ar.length; i++) {
min_val = Math.min(min_val,ar[i]);
}
document.write(min_val);
}
values([14,99, 10, 18,19, 11, 34]);```
这将为空数组或输入的最小值写入Infinity
。
Math.min()
接收像Math.min(-2, -3, -1)
或与数组Math.min(...arr)
的参数。你给这些参数Math.min([14,99, 10, 18,19, 11, 34], 0)
,其中0是最小值。所以你收到的是0。此外,不需要循环,因为Math.min()
找到了最小值。所以,解决方案是:
function values(ar) {
var min_val = Math.min(...ar);
//document.write(min_val);
return min_val
}
console.log(values([14,99, 10, 18,19, 11, 34]))
或
function values(ar) {
var min_val = Math.min(...ar);
document.write(min_val);
}
简写:
document.write(Math.min(...ar));