gpt4 book ai didi

javascript - 当我对此类对象数组使用 reduce 方法时,我得到一个 "NaN"

转载 作者:行者123 更新时间:2023-11-30 08:21:12 25 4
gpt4 key购买 nike

所以我想获得一个充满学生对象(姓名、年龄、评分......等)的数组的平均“评分”,所以我使用 reduce 方法来计算......这就像:

var std = [
{
name : 'david',
Rating:'8',
age:'10'
},
{
name : 'tomas',
Rating:'5',
age:'10'
},
{
name : 'raul',
Rating:'2',
age:'10'
}
]
var averageRating = std.reduce(
(acc,val) => {
Number(acc.Rating) + Number(val.Rating)) / std.length
}
)
console.log(averageRating); // output NaN

最佳答案

您的代码存在的问题是,如果您不提供初始值,则 acc 会采用第一个值,而 val 会采用第二个值。

在这种情况下,对于第一次迭代,从数组中取出前 2 项并计算恰好是数字的值。对于第二次迭代,acc 不再是对象,因此计算将失败。

尝试跟随

  • 给初值0来减少函数
  • 更新reduce函数,只计算和,然后将结果除以数组长度

var std = [{name: 'david',Rating: '8',age: '10'}, {name: 'tomas',Rating: '5',age: '10'}, {name: 'raul',Rating: '2',age: '10'}];

let avg = std.reduce((a,c) => a + Number(c.Rating), 0)/std.length;
console.log(avg);

关于javascript - 当我对此类对象数组使用 reduce 方法时,我得到一个 "NaN",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53231646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com