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

使用JavaScript的.map()求和对象键值结果异常,求问题原因

问题解答

你用错map()的核心功能了——map()的作用是遍历数组,把每个元素转换成新值,最终返回和原数组长度相同的新数组,不是用来做累加计算的。

看你的代码:每次迭代map时,你都把当前的sum计算结果返回了,第一次迭代sum变成14,返回14;第二次sum变成30,返回30,所以最终得到的是[14, 30]这个数组,而不是单个求和结果。

如果非要用map()来练习,正确的思路是先用map提取出所有grade值,再对提取后的数组求和,示例代码如下:

function getSumGrades(grades) {
  // 先用map把原数组转换成只存分数的数组:[14, 16]
  const gradeValues = grades.map(function(grade) {
    return grade.grade;
  });
  // 再对提取后的数组求和(这里用reduce更简洁)
  return gradeValues.reduce(function(acc, cur) {
    return acc + cur;
  }, 0);
}

// Sample usage - do not modify
let grades = [{
    name: "Sam Blue",
    grade: 14
  },
  {
    name: "Charlie Bron",
    grade: 16
  }
];
console.log(getSumGrades(grades)); // 输出30

关键总结

  • map()的定位是转换元素、生成新数组,不适合直接用来做累加求和操作
  • 若要练习map(),可以用它完成数据提取的步骤,再结合reduce()或循环完成求和

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 12:21:04