我正在使用 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/