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

编写兼容单值与数组输入的JS翻倍函数结果异常如何解决

问题根源

你的代码逻辑存在重复计算+类型隐式转换错误:当入参为数组时,你已经通过map遍历将每个元素乘2得到了新数组,最后统一执行return value * 2时,JS会触发隐式类型转换,尝试将数组转为数字后做乘法,最终会返回NaN,完全不符合预期。

修复代码

只要调整返回逻辑,数组分支处理完直接返回即可,非数组类型再执行单值翻倍:

function double(value) {
  if (Array.isArray(value)) {
    return value.map(function(element) {
      return element * 2;
    });
  }
  return value * 2;
}
验证结果
  • 调用double(2) 输出 4,符合预期
  • 调用double([1, 2, 3]) 输出 [2, 4, 6],符合预期
简化写法(ES6+)

如果你的运行环境支持ES6语法,可以用箭头函数和三元运算符简化代码:

const double = value => Array.isArray(value) ? value.map(el => el * 2) : value * 2;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:06:02