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

如何使用forEach函数计算对象数组中数值的平均值?出现NaN错误

解决forEach计算对象数组数值属性平均值的NaN问题

你的代码出现NaN错误主要有几个问题,逐个修正就能解决:

错误点和修正步骤

  • 对象语法错误:JavaScript对象的键值对必须用:分隔,不是=。比如把name = "John"改成name: "John"。
  • 数值格式不规范:数组里的number是带逗号的字符串(比如"125,44"),JS无法直接识别为有效数字,需要先把逗号替换成点号,再转成数字类型。
  • forEach回调逻辑错误:回调里的参数是数组的每个对象,不是数值,要取对象的number属性来累加,还要确保转成数字后再计算。
  • 变量未声明:average最好用let/const声明,避免全局变量污染。

修正后的代码

var people = [
  { 
    name: "John",
    number: "283.37"
  },
  {
    name: "Susan",
    number: "125,44"
  },
  {
    name: "Karen",
    number: "98,7"
  }
];

let sum = 0;
people.forEach(function(person) {
  // 替换逗号为点号,转成数字后累加
  const num = parseFloat(person.number.replace(',', '.'));
  sum += num;
});

const average = sum / people.length;
console.log(average); // 输出约169.17

补充说明

如果担心number属性可能存在无效字符串,可以加个判断,只累加有效数字避免NaN影响总和:

people.forEach(function(person) {
  const numStr = person.number.replace(',', '.');
  const num = parseFloat(numStr);
  if (!isNaN(num)) {
    sum += num;
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:54:28