我有一个包含2个数组的数据对象(团队名称列表)

const data = {
  Liga: ['Alaves','Atletico', 'Barcelona', 'Betis'],
  Premier: ["Arsenal", "Chelsea", "Everton", 'Liverpool']
};


基于我选择的值(Liga或Premier),我得到了我的球队名单。

这些团队有两个不同的数据得分结果scoresligascorespremier

const scoresliga = [
  { day: '0', Alaves: -6, Atletico: -1, Barcelona: -2, Betis: -6},
  { day: '1', Alaves: -7, Atletico: 1, Barcelona: -2, Betis: -6}
];

const scorespremier = [
  { day: '0', Arsenal: -6, Chelsea: -1, Everton: -2, Liverpool: -6},
  { day: '1', Arsenal: -7, Chelsea: 1, Everton: -2, Betis: -6}
];


我的问题是我必须找到一种方法,当我选择“ Liga”时,我必须使用scoresliga对象;如果选择“ Premier”,则必须使用scorespremier

这也将解决我在计算目前不是一般功能的球队平均数时遇到的问题。

这是使用scoresliga数据对象的函数的代码段,但它必须是Ligas(Premier和Liga)的共享函数。

const getAverage = team => {

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

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


我转载了我的案子,看看here

最佳答案

只需将其他属性添加到getAverage

const getAverage = (league, team) => {

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

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


javascript - 根据选择的选项动态使用其他数据对象-LMLPHP

同时在分数中创建一些映射

const scores = {
  Liga: [
    { day: "0", Alaves: -6, Atletico: -1, Barcelona: -2, Betis: -6 },
    { day: "1", Alaves: -7, Atletico: 1, Barcelona: -2, Betis: -6 }
  ],
  Premier: [
    { day: "0", Arsenal: -6, Chelsea: -1, Everton: -2, Liverpool: -6 },
    { day: "1", Arsenal: -7, Chelsea: 1, Everton: -2, Betis: -6 }
  ]
};


并在Chart.js中

<span>{getAverage(scores[this.state.selectedLeague], this.state.selectedTeam)}</span>


另外,更新

handleLeagueChange = event => {
    const selectedLeague = event.target.value;
    this.setState({ selectedLeague: selectedLeague }, () => {
      this.setState({ selectedTeam: data[selectedLeague][0] });
    });
  };

09-11 07:39