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

如何将ES6箭头函数版混合数组求和函数改写为标准长格式?

你的代码问题分析与改写方案

问题出在哪?

你的代码有两个关键错误:

  • 提前return导致reduce未执行:在sumMix函数里,你先执行x.map(...)并直接return了这个结果,函数执行到这里就结束了,后面的str.reduce(...)完全没机会运行。
  • 变量未定义:str这个变量在当前作用域里根本不存在,你想操作的应该是map转换后的数组。

改写为你熟悉的长格式写法

把链式调用拆成分步操作,完全用传统函数写法,不用箭头函数的隐式return:

const myArr = [3, 7, 8, "5", "9", 6, "2"];

function sumMix(x) {
  // 第一步:把数组所有元素转成数字,存到变量里
  const convertedArr = x.map(function(str) { 
    return parseInt(str);
  });
  // 第二步:对转换后的数组求和(注意给reduce加初始值0,避免空数组等异常)
  const total = convertedArr.reduce(function(acc, cur) {
    return acc + cur;
  }, 0);
  // 第三步:返回求和结果
  return total;
}

console.log(sumMix(myArr)); // 输出:40

关于简洁箭头函数版本的理解

你看到的可行方案用了链式调用,map返回的数组直接调用reduce,而且箭头函数在只有一行代码时可以省略{}和return,它等价于下面的传统写法:

function sumMix(x){
  return x.map(function(str) {
    return parseInt(str);
  }).reduce(function(acc, cur) {
    return acc + cur;
  }, 0);
}

箭头函数只是让写法更简洁,核心逻辑和上面的长格式完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:30:47