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

React - 在对象之间定义更大的字符串

React - 在对象之间定义更大的字符串

呼啦一阵风 2021-10-14 13:32:22
我正在计算数组中每个对象(团队)的平均分数。这是我的数据结构:const scores = [  { 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 = team => {  if (isNaN(scores[0][team])) return null;  return scores.map(x => x[team]).reduce((a, c) => a + c) / scores.length;}; 我需要建立人数越多的对象队伍越强。我怎样才能做到这一点 ?实力较强的球队是平均水平较高的球队。这里我做了一个原型来重现场景:https : //codesandbox.io/s/recharts-examples-y0y7q
查看完整描述

2 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

从这样的团队数组中获取 maxAverage:


this.state = {

    homeCity: "Barcelona",

    awayCity: "Valencia"

}


const scores = [

    { 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 = team => {

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


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

};


const maxAverage = teams => {

    return teams.map(team => {

        return {

            team:team, 

            avg: getAverage(team)

        }

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

}


console.log(maxAverage([this.state.homeCity,this.state.awayCity]));


查看完整回答
反对 回复 2021-10-14
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

您可以扩展您的代码,循环遍历第一个元素以获取所有键,过滤出日期键,以便我们留下所有团队名称,映射团队名称并获取平均值然后进行排序


const scores = [

  { 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 = team => {

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

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

};


let stronger = Object.entries(scores[0])

                     .filter(([key, value]) => key !== 'day')

                     .map(([key, value]) => [key, getAverage(key)])

                     .sort((a, b) => b[1] - a[1])


console.log(stronger)


查看完整回答
反对 回复 2021-10-14
  • 2 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

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