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

JavaScript箭头函数计算学生平均分出错,输出异常值如何解决

问题根因

你的代码异常的核心原因是 prompt 函数的返回值为字符串类型,直接在reduce中执行加法操作时会触发字符串拼接逻辑,而非数值求和。你看到的242628302.6本质是输入的5个分数字符串拼接后,被隐式转换为数值再除以数组长度的结果。

修复方案

有两种常见的修复思路,可根据场景选择:

方案1:输入时直接转换为数值(推荐)

存入数组阶段就完成类型转换,也可以同步增加输入合法性校验,避免后续逻辑异常:

const marks = [];
const size = 5; // 数组最大长度

for (let i = 0; i < size; i++) {
  // 用parseFloat将输入的字符串转为浮点数
  const input = parseFloat(prompt('Enter Element ' + (i + 1)));
  // 校验输入合法性,非数字要求重新输入
  if (isNaN(input)) {
    alert('请输入合法的数字分数');
    i--;
    continue;
  }
  marks[i] = input;
}
const average = marks => marks.reduce((prev, curr) => prev + curr, 0) / marks.length;
const result = average(marks);
console.log(result);

方案2:累加时做类型转换

不需要修改输入逻辑,仅修改求和阶段的代码即可:

const marks = [];
var size = 5; //Maximum Array size

for (var i = 0; i < size; i++) { //Taking Input from user
   marks[i] = prompt('Enter Element ' + (i + 1));
}
// 累加时把curr转为数值类型
const average = marks => marks.reduce((prev, curr) => prev + Number(curr), 0) / marks.length;
const result = average(marks);
console.log(result);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:36:04