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

JavaScript中如何求数组两个最小数之和?我的代码为何测试失败?

问题排查与修复

你的代码核心问题在于排序回调函数没有返回值,导致数组无法按数值大小正确排序:

function sumTwoSmallestNumbers(numbers) {  
  const sorted = numbers.sort((a, b) => {
    a - b; // 这里缺少return语句,没有返回比较结果
  });
  return sorted[0] + sorted[1];
}

原因解释

Array.sort() 的比较函数需要返回一个数值来决定元素顺序:

  • 返回负数:a 排在 b 前面
  • 返回0:a 和 b 位置不变
  • 返回正数:b 排在 a 前面

你写了 a - b 但没有用 return 输出结果,相当于每次比较都返回 undefined,会被JS自动转换为0,数组不会按数值升序排列,自然无法正确获取最小的两个元素。

修复后的代码

两种写法都可以:

  1. 显式添加return:
function sumTwoSmallestNumbers(numbers) {  
  const sorted = numbers.sort((a, b) => {
    return a - b;
  });
  return sorted[0] + sorted[1];
}
  1. 利用箭头函数的简写(单表达式自动返回):
function sumTwoSmallestNumbers(numbers) {  
  const sorted = numbers.sort((a, b) => a - b);
  return sorted[0] + sorted[1];
}

补充说明:修正后的逻辑能处理包含重复值、大数的场景,比如输入 [19, 5, 42, 2, 77],排序后会得到 [2,5,19,42,77],求和结果为7,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 03:45:37