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

JavaScript求和函数数组传参异常:返回错误字符串无法通过测试

解决求和函数兼容数组参数的问题

问题原因

当调用sum([7,11])时,剩余参数...numbers会把传入的数组作为单个元素存入numbers,此时numbers的值是[[7,11]]。遍历相加时,0 + [7,11]会触发JS的类型转换,数组被转为字符串"7,11",最终拼接成"07,11",而非数字求和。

解决方法

方法1:判断参数是否为数组

检查传入的参数,如果是单个数组,就直接使用该数组进行计算:

const sum = function(...numbers) {
  let nums = numbers;
  // 处理单个数组参数的情况
  if (nums.length === 1 && Array.isArray(nums[0])) {
    nums = nums[0];
  }
  let result = 0;
  for (let each of nums) {
    result += each;
  }
  return result;
};

方法2:使用数组扁平化flat()

通过flat()方法将参数数组扁平化一层,同时兼容多参数和数组参数的场景:

const sum = function(...numbers) {
  let result = 0;
  // 扁平化参数数组,处理嵌套数组
  for (let each of numbers.flat()) {
    result += each;
  }
  return result;
};

两种方法都能让sum(7,11)和sum([7,11])都返回正确结果18,满足测试用例要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:30:53