如何使用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
相关产品推荐
相关产品推荐

