You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Math.max()返回正确最大值但数组求最小值时结果为0?

问题根因

你的代码问题出在最小值变量的初始值设置错误:

  • 你将min_val初始值固定设为0,本次传入的测试数组所有元素均大于0,每次执行Math.min(min_val, ar[i])比对时,0永远是更小的取值,所以最终返回结果始终为0。
  • Math.max()能返回正确结果只是巧合:本次测试数组所有元素都大于0,如果测试数组包含负数,用同样的初始值逻辑写的最大值计算代码也会出错。
修复方案

提供两种常用修复方式:

调整循环逻辑

将初始值设为数组第一个元素,循环从第二个元素开始遍历即可,同时补充空数组边界判断避免报错:

function values(ar) {
  if (!ar.length) return;
  var min_val = ar[0];
  for (var i = 1; i < ar.length; i++) {
    min_val = Math.min(min_val, ar[i]);
  }
  document.write(min_val);
}
values([14,99, 10, 18,19, 11, 34]); // 输出正确结果10

直接使用内置方法语法糖

不需要手动写循环,用展开运算符将数组元素传入Math.min即可,代码更简洁:

function values(ar) {
  if (!ar.length) return;
  document.write(Math.min(...ar));
}

内容的提问来源于stack exchange,提问作者Debankan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:48:03