Tengo una matriz de objetos que se ve así:
Array(3) [ {…}, {…}, {…} ] 0: Object { plName: "player1", plNumber: 1, score: 30, … } 1: Object { plName: "player2", plNumber: 2, score: 24, … } 2: Object { plName: "player3", plNumber: 3, score: 89, … }Estoy tratando de averiguar la mejor manera de obtener un objeto con el valor más alto de la propiedad de puntuación. En este caso:
2: Object { plName: "player3", plNumber: 3, score: 89, … }Realmente apreciaria cualquier ayuda :)
Una simple reducción debería hacerlo.
let arr = [{ plName: "player1", plNumber: 1, score: 30 }, { plName: "player2", plNumber: 2, score: 24 }, { plName: "player3", plNumber: 3, score: 89 } ]; let result = arr.reduce((o1, o2) => o1.score > o2.score ? o1 : o2); console.log(result);Si pudiera haber múltiples puntajes altos
let arr = [{ plName: "player1", plNumber: 1, score: 30 }, { plName: "player2", plNumber: 2, score: 24 }, { plName: "player3", plNumber: 3, score: 89 }, { plName: "player4", plNumber: 4, score: 24 }, { plName: "player5", plNumber: 5, score: 89 } ]; let maxScoreObject = arr.reduce((o1, o2) => o1.score > o2.score ? o1 : o2); let result = arr.filter(o => o.score === maxScoreObject.score); console.log(result);Una función genérica podría ser algo como
const data = [{ plName: "player1", plNumber: 1, score: 30 }, { plName: "player2", plNumber: 2, score: 24 }, { plName: "player3", plNumber: 3, score: 89 } ]; function maxBy(array, property) { return array.reduce((max, item) => { if (item[property] > max[property]) return item; return max; }) } console.log(maxBy(data, 'score'));score , obtenga el primero que es el puntaje máximo. data.sort((a,b)=>b.score-a.score)[0] //{plName: 'player3', plNumber: 3, score: 89}