为了账号安全,请及时绑定邮箱和手机立即绑定

计算不同数组中对象之间的较大值

计算不同数组中对象之间的较大值

慕少森 2021-12-02 15:19:28
我有一个score包含两个对象的数组:Liga和Premier。这 2 个对象是一组团队列表。当score以前是单个对象数组时,我能够定义更大的字符串。这是我复制的演示,比较工作正常。这是计算比较 2 个对象的较高值的代码。const maxAverage = teams => {  return teams.map(team => {      return {          team:team,           avg: getAverage(team)      }  }).reduce((a,b)=>a.avg>b.avg?a:b).team}<p>Stronger Team:{maxAverage([this.state.homeCity,this.state.awayCity])</p>现在的问题是,现在score是我所说的 2 个对象的数组,我正在尝试以类似的方式更改我的函数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}我无法将maxAverage所选的两个联赛之一的参数传递给我的函数,然后是我想要比较的 2 个对象(球队)。我想做这样的事情:<p>Stronger Team:{maxAverage([this.state.selectedLeague], this.state.selectedHomeTeam,this.state.selectedAwayTeam])}这是我在当前情况下复制的另一个演示。
查看完整描述

3 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

我查看了您的第二个演示,我认为您有两种选择来选择正确的团队,并且您可以对两者重复使用以前的 getAverage 方法。任何一个


  const maxAverage = (league, teams) => {

  const currentLeague = [scores][0][league]

  return teams

    .map(team => {

      return {

        team: team,

        avg: getAverage(currentLeague, team)

      };

    })

    .reduce((a, b) => (a.avg > b.avg ? a : b)).team;

};

或者,您可以保留原始 maxAverage 代码并更改实现联赛值的方式,例如。


            <p>           

              Stronger Team:

              {maxAverage(scores[this.state.selectedLeague], [

                this.state.selectedHomeTeam,

                this.state.selectedAwayTeam

              ])}

            </p>


查看完整回答
反对 回复 2021-12-02
?
当年话下

TA贡献1890条经验 获得超9个赞

什么是问题?


const scores = {'liga':[

  { day: "1", Barcelona: 1, Real: 3, Valencia: 0 },

  { day: "2", Barcelona: 4, Real: 6, Valencia: 3 },

  { day: "3", Barcelona: 7, Real: 7, Valencia: 3 },

  { day: "4", Barcelona: 7, Real: 8, Valencia: 6 }

], 'primier':[

  { day: "1", Barcelona: 1, Real: 3, Valencia: 0 },

  { day: "2", Barcelona: 4, Real: 6, Valencia: 3 },

  { day: "3", Barcelona: 7, Real: 7, Valencia: 3 },

  { day: "4", Barcelona: 7, Real: 8, Valencia: 6 }]};

const getAverage = (type, team) => {

  if (isNaN(scores[type][0][team])) return null;


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

};

getAverage('liga',this.state.homeCity);

源代码:https : //codesandbox.io/s/recharts-examples-d9qy0


查看完整回答
反对 回复 2021-12-02
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

给定签名const maxAverage = (league, teams) => ...,以下代码将匹配预期的参数(但不确定业务逻辑):


maxAverage(

  this.state.selectedLeague,

  [this.state.selectedHomeTeam, this.state.selectedAwayTeam]

)


查看完整回答
反对 回复 2021-12-02
  • 3 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信