Если вы хотите только верхнюю часть каждой категории, вы можете использовать Math.max
таким образом.Поскольку существует высокая вероятность того, что, в частности, победит ведущий бомбардир, этот метод возвращает всех игроков с таким счетом.
Однако, если вы собираетесь работать с несколькими свойствами и большим входным массивом., было бы более разумно обрабатывать все это в одном цикле, как видно во втором примере.
var data = {
"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 maxScore = Math.max(...data.elements.map(t => t.goals_scored))
console.log(maxScore)
const leadingScorers = data.elements.filter(t => t.goals_scored == maxScore)
console.log(leadingScorers)
Второй пример:
const data = {
"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,
}
]}
let len = data.elements.length
const topValues = {goals_scored: 0, assists: 0}, topPlayers = { goals_scored: [], assists: [] }, keys = Object.keys(topPlayers)
while(--len > -1){
let player = data.elements[len]
keys.forEach(key => {
if(player[key] == topValues[key]) topPlayers[key].push(player.first_name + ' ' + player.second_name)
else if(player[key] > topValues[key]){
topPlayers[key] = [player.first_name + ' ' + player.second_name]
topValues[key] = player[key]
}
})
}
console.log(topPlayers)