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

JavaScript arguments对象求数组最小值返回0而非-1问题求解

问题原因分析

共有两个核心错误导致输出不符合预期:

  • 错误1:arguments 对象存储的是传入函数的所有参数集合,你调用findMin(data)时仅传入了1个参数(整个data数组对象),所以for (let n of arguments)遍历的是[data数组],循环拿到的n是完整数组而非数组内的单个元素。数组和数字0做大小比较时会隐式转换为NaN,NaN < 0的判定结果为false,因此min变量始终不会被更新。
  • 错误2:最小值初始化值设置不合理。就算数组正确传入遍历,如果数组所有元素都大于0,最终返回的还是初始值0,依然无法得到正确结果。
修复方案

提供两种常见的正确写法:

写法1:直接接收数组参数遍历

let data = [2,3,4,2,6,7,8,9,-1,7,6,4,3]

function findMin(arr) {
  // 初始值设为数组第一个元素,避免初始值干扰结果
  let min = arr[0]
  for (let n of arr) {
    if(n < min) {
      min = n
    }
  }
  return min
}

const smallNumber = findMin(data)
console.log(smallNumber) // 输出-1

写法2:保留arguments逻辑,调用时展开数组

let data = [2,3,4,2,6,7,8,9,-1,7,6,4,3]

function findMin() {
  // 初始值设为正无穷,保证第一个传入的数字一定会覆盖初始值
  let min = Infinity
  for (let n of arguments) {
    if(n < min) {
      min = n
    }
  }
  return min
}

// 用展开运算符把数组元素拆为单个参数传入
const smallNumber = findMin(...data)
console.log(smallNumber) // 输出-1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:06:04