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

数组最值获取函数空数组返回异常问题求助

问题分析与解决

问题根源

  • 空数组判断逻辑失效:JavaScript里数组属于引用类型,numbers === []是在比较两个数组的内存地址,而每次写[]都会生成新的数组对象,所以这个判断永远返回false,根本触发不了返回空对象的逻辑。
  • 代码执行顺序不合理:你先执行了Math.max(...numbers)和Math.min(...numbers),当传入空数组时,这两个方法没有接收任何参数,Math.max()会返回-Infinity,Math.min()会返回Infinity,后续的空数组判断即使生效,也已经提前生成了这两个异常值。

修正后的代码

function findBiggestAndSmallest(numbers) {
  // 先判断数组是否为空,用length属性是最直接可靠的方式
  if (numbers.length === 0) {
    return {};
  }
  const biggest = Math.max(...numbers);
  const smallest = Math.min(...numbers);
  return { biggest, smallest };
}

console.log(findBiggestAndSmallest([])); // 输出 {}
console.log(findBiggestAndSmallest([2,1,5,100,20])); // 输出 { biggest: 100, smallest: 1 }

可选优化(兼容非数组输入)

如果需要处理传入非数组参数的情况,可以增加类型校验:

function findBiggestAndSmallest(numbers) {
  // 先检查是否为数组且不为空
  if (!Array.isArray(numbers) || numbers.length === 0) {
    return {};
  }
  const biggest = Math.max(...numbers);
  const smallest = Math.min(...numbers);
  return { biggest, smallest };
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:15:49