javascript - 从 JSON 获取最大值(value)并显示相关数据 (API/Javascript)

标签 javascript loops object for-loop max

我正在使用 API 来显示足球运动员的统计数据,使用 Javascript,我目前有一个“for 循环”,可以遍历所有球员并将其显示在表格中。

我现在要做的是找到并显示具有最高统计数据的球员 - 最高得分手/最多不失球/最多红牌等。我该如何做到这一点?

以下是来自 API 的相关 JSON 数据的示例:

{
   "elements": [
        {
            "first_name": "Petr",
            "second_name": "Cech",
            "minutes": 585,
            "goals_scored": 0,
            "assists": 0,
            "clean_sheets": 1,
        },
        {
            "first_name": "Bernd",
            "second_name": "Leno",
            "minutes": 135,
            "goals_scored": 0,
            "assists": 0,
            "clean_sheets": 0,
        },
        {
            "first_name": "Mesut",
            "second_name": "Özil",
            "minutes": 510,
            "goals_scored": 2,
            "assists": 0,
            "clean_sheets": 2,
        },
        *(and on and on...)*
]}

其中大约有 500 名玩家,因此我需要有一些东西可以遍历所有玩家,并找出哪些玩家的每个属性名称的值最高。

我怎样才能得到它,以便我可以(例如)显示最佳射手、他们的目标和名字。 我不确定执行此操作的正确方法,是否再次循环并以某种方式对 math.max 执行某些操作?

谢谢!

最佳答案

这只会循环数组一次并一次性检索所有统计信息:

const input = {
  "elements": [{
      "first_name": "Petr",
      "second_name": "Cech",
      "minutes": 585,
      "goals_scored": 0,
      "assists": 0,
      "clean_sheets": 1,
    },
    {
      "first_name": "Bernd",
      "second_name": "Leno",
      "minutes": 135,
      "goals_scored": 0,
      "assists": 0,
      "clean_sheets": 0,
    },
    {
      "first_name": "Mesut",
      "second_name": "Özil",
      "minutes": 510,
      "goals_scored": 2,
      "assists": 0,
      "clean_sheets": 2,
    }
  ]
};

const stats = input.elements.reduce((stats, player) => {
  ['minutes', 'goals_scored', 'assists', 'clean_sheets'].forEach(key => {
    if (player[key] > stats[key].max) {
      stats[key].max = player[key];
      stats[key].bestPlayer = player;
    }
  });
  return stats;
}, {
  minutes: {max: 0, bestPlayer: null}, 
  goals_scored: {max: 0, bestPlayer: null}, 
  assists: {max: 0, bestPlayer: null}, 
  clean_sheets: {max: 0, bestPlayer: null}
});

console.log('minutes', stats.minutes);
console.log('goals_scored', stats.goals_scored);
console.log('assists', stats.assists);
console.log('clean_sheets', stats.clean_sheets);

关于javascript - 从 JSON 获取最大值(value)并显示相关数据 (API/Javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52899151/

相关文章:

javascript - 使用 lodash 方法返回新形式的数组

javascript - 在提交时传递主键而不是属性

javascript - 在循环中调用图像会产生重叠变量

python - 在 Python 中运行游戏循环时多线程显示游戏分数?

javascript - 使用 NEW 时从 javascript 函数返回

用于蜜蜂计数的 Matlab Cascade 训练

javascript - 如何跳过 cypress 中的一个特性,使其不进行端到端测试

javascript - 如何在 JavaScript 中访问 JSON 文件的属性?

javascript - document.form.textbox.style...似乎找不到这个?

c# - 如何使用 for 循环而不是 foreach 循环?