gpt4 book ai didi

javascript - 如何在 ES6 中使用 reduce() 来计算平均值?

转载 作者:行者123 更新时间:2023-12-03 14:06:13 24 4
gpt4 key购买 nike

我正在尝试从 JSON 数据中提取 econseason(请参见下面的屏幕截图)。我想找到每个季节的平均经济率

例如:季节 = 2018 经济率 = 10,20,30 所以平均经济率 = (10+20+30)/3 = 20

season = 2017 economy rate = 30,40,50 所以平均经济率 = (30+40+50)/3 = 40

所以我想计算特定赛季所有经济率的总和,然后取平均值,即用特定赛季的总和除以该赛季的比赛数。

下面是我尝试在 ES6 中使用 reduce() 的代码:

const economy = bowldata.reduce( (a,{season, econ})  => {
a[season] = a[season] + parseInt(econ);
return a;
}, {});
console.log(economy);

我正在获取 2018:NaN 但我希望我的输出为 2018:22 、2017: 50 等。即我想要该季节的键值对和平均经济率。

截图:

enter image description here

假设我有 JSON 数据:

var bowldata = [
{
season:2018
economy:10
},
{ season:2018
economy:20
},
{ season:2018
economy:30
},
{ season:2017
economy:40
},
{ season:2017
economy:50
},
{ season:2016
economy:10
},
]

现在reduce()应该返回的对象是年份和平均经济率的键值对。

结果:[ 2018:20 , 2017:45 , 2016:10 ]

最佳答案

您可以将一个对象作为任何季节的默认值,因为您想要计算平均值。为此,您还需要计数。

var bowldata = [{ season: 2001, econ: '30' }, { season: 2001, econ: '40' }, { season: 2001, econ: '50' }, { season: 2001, econ: '60' }, { season: 2002, econ: '30' }, { season: 2002, econ: '40' }, { season: 2002, econ: '50' }, { season: 2003, econ: '60' }, { season: 2003, econ: '30' }, { season: 2003, econ: '40' }, { season: 2003, econ: '50' }, { season: 2003, econ: '60' }],
economy = bowldata.reduce((a, { season, econ }) => {
a[season] = a[season] || { sum: 0, count: 0 };
a[season].sum += +econ;
a[season].average = a[season].sum / ++a[season].count;
return a;
}, Object.create(null)),
nice = Object.assign(...Object
.entries(economy)
.map(([k, { average }]) => ({ [k]: average }))
);

console.log(nice);
console.log(economy);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 如何在 ES6 中使用 reduce() 来计算平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50946820/

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