Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应-计算仅部分工作的元素之间的较大值_Javascript_Reactjs_Reduce_Es6 Map - Fatal编程技术网

Javascript 反应-计算仅部分工作的元素之间的较大值

Javascript 反应-计算仅部分工作的元素之间的较大值,javascript,reactjs,reduce,es6-map,Javascript,Reactjs,Reduce,Es6 Map,我正在比较两个不同的团队,以确定哪一个更强大。 通过计算两个队得分的平均值进行比较,值越大的队越强 我在这里复制了我的案例: 这些是使用的函数 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 m

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

我在这里复制了我的案例:

这些是使用的函数

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>
const getAverage=(联盟、团队)=>{
如果(isNaN(联赛[0][team])返回空值;
返回league.map(x=>x[团队]).reduce((a,c)=>a+c)/league.length;
};
常量最大平均值=(联盟、球队)=>{
返回队
.map(团队=>{
返回{
团队:团队,
平均值:平均值(联赛、球队)
};
})
.减少((a,b)=>(a.avg>b.avg?a:b))。团队;
};
更强的球队:{maxAverage(this.state.selectedLeague,[this.state.selectedHomeTeam,this.state.selectedWayTeam])

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

例如,如果我比较并选择了马竞对巴塞罗那的比赛,它定义了巴塞罗那更强,这是错误的(-2不大于0),但在选择巴塞罗那对马竞的比赛中,它定义了马竞更强,这是正确的(0大于-2)


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

在maxAverage函数中,您应该参考您希望在
分数对象上选择的确切联赛

以前,您试图传递整个
分数
对象,该对象由
Liga
Premier
数组组成。这就是为什么当您尝试运行该方法时,它将返回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;
};

我已经创建了一个演示。

在maxAverage函数上,您应该参考您希望在
分数对象上选择的确切联赛

以前,您试图传递整个
分数
对象,该对象由
Liga
Premier
数组组成。这就是为什么当您尝试运行该方法时,它将返回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;
};

我已经创建了一个演示。

您平均错过了一步:

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

更强的团队:
{maxAverage(分数[此.state.selectedLeague][
this.state.selectedHomeTeam,
this.state.selectedaway团队
])}

它使用getAverage,但这需要分数,而不仅仅是团队名称。尝试上面的代码,它似乎工作

尝试分解代码并进行调试。最后,我将几个Recurder函数移到了它们自己的函数中(只是为了调试),然后添加了一个“调试器”,以便在该页面上找到正在运行的js


我打赌你是因为错过了它而自责:p

你平均错过了一步:

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

更强的团队:
{maxAverage(分数[此.state.selectedLeague][
this.state.selectedHomeTeam,
this.state.selectedaway团队
])}

它使用getAverage,但这需要分数,而不仅仅是团队名称。尝试上面的代码,它似乎工作

尝试分解代码并进行调试。最后,我将几个Recurder函数移到了它们自己的函数中(只是为了调试),然后添加了一个“调试器”,以便在该页面上找到正在运行的js


我敢打赌你错过了它,一定是在自责:p

谢谢你发布演示。它让我的学习变得简单了1000%^我总是试图让答案变得简单而详细,这是我的学习方式。感谢您发布演示。它让我的学习变得简单了1000%^我总是试图让答案变得简单而详细,这是我的学习方式。谢谢