gpt4 book ai didi

javascript - React - 计算仅部分工作的元素之间的较大值

转载 作者:行者123 更新时间:2023-12-01 00:30:25 24 4
gpt4 key购买 nike

我正在比较两个不同的团队来确定哪一个更强。比较是通过计算两队得分的平均值来进行的,数值越大的球队越强。

我在这里重现了我的案例:DEMO

这些是使用的函数

const getAverage = (league, team) => {
if (isNaN(league[0][team])) return null;

return league.map(x => x[team]).reduce((a, c) => a + c) / league.length;
};

const maxAverage = (league, teams) => {
return teams
.map(team => {
return {
team: team,
avg: getAverage(league, team)
};
})
.reduce((a, b) => (a.avg > b.avg ? a : b)).team;
};


<p>Stronger Team:{maxAverage(this.state.selectedLeague, [this.state.selectedHomeTeam,this.state.selectedAwayTeam])}</p>

正如您在演示中看到的,它只能部分工作。

例如,如果我比较并选择马竞与巴塞罗那,它会定义巴塞罗那更强,这是错误的(-2不大于0),但反过来选择巴塞罗那与马竞它定义了马竞更强,这是正确的(0大于-2)。

我的问题出在哪里以及如何解决它?

最佳答案

在 maxAverage 函数中,您应该引用您想要在 scores 对象上选择的确切联赛。

以前,您尝试传递整个 scores 对象,该对象由 LigaPremier 数组组成。这就是为什么当您尝试运行该方法时它将返回 null。

相反,您应该将选定的联赛传递给 getAverage 方法,该方法接受 league 作为数组(而不是数组对象)。

这应该是您的 maxAverage 函数所需的更改。

const maxAverage = (league, teams) => {
return teams
.map(team => {
return {
team: team,
avg: getAverage(scores[league], team)
};
})
.reduce((a, b) => (a.avg > b.avg ? a : b)).team;
};

我已经通过 here 创建了一个演示.

关于javascript - React - 计算仅部分工作的元素之间的较大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58594491/

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