Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

104
Visualizações
JS Compare dos objetos y devuelva una nueva clave diciendo quién tiene el valor más alto

Tengo una matriz de objetos:

 teamScores: [ { teamName: 'Team name 1', points: 21}, { teamName: 'Team name 2', points: 11}, ],

Necesito comparar los 'puntos' clave dentro de estos dos objetos y devolver una nueva clave que diga si es el valor más alto. Para este ejemplo, el retorno debe ser:

 teamScores: [ { teamName: 'Team name 1', points: 21, isHighest: true}, { teamName: 'Team name 2', points: 11, isHighest: false}, ],

Y viceversa:

 teamScores: [ { teamName: 'Team name 1', points: 11, isHighest: false}, { teamName: 'Team name 2', points: 21, isHighest: true}, ],

Traté de usar .reduce() pero no funcionó tan bien. Aquí está mi intento:

 const newTeams = scoreTeams.reduce((acc, team, idx) => { const isHigh = scoreTeams[idx].points > scoreTeams[idx - 1]?.points; const accTeam = { ...team, isHighest: isHigh, }; acc[idx] = accTeam; return acc; }, []);

Si el primer objeto tiene un valor más bajo, funciona bien, la salida:

 teamScores: [ { teamName: 'Team name 1', points: 11, isHighest: false}, { teamName: 'Team name 2', points: 21, isHighest: true}, ],

Pero si el primer valor es mayor que el segundo, no funciona tan bien, la salida:

 teamScores: [ { teamName: 'Team name 1', points: 21, isHighest: false}, { teamName: 'Team name 2', points: 11, isHighest: false}, ],

Necesito ayuda para comparar estos objetos correctamente, ¡gracias de antemano!

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Necesitarías dos iteraciones. Uno para identificar el más alto y otro para establecer la propiedad en cada objeto.

 const teamScores = [ { teamName: 'Team name 1', points: 21}, { teamName: 'Team name 2', points: 11}, ]; const maxPoints = Math.max(...teamScores.map(({points}) => points)); const newTeams = teamScores.map(o => ({...o, isHighest: o.points === maxPoints})); console.log(newTeams);

about 4 years ago · Juan Pablo Isaza Relatório

0

Primero encuentre el más alto con Math.max , luego compare los points de cada elemento con el máximo.

 var teamScores = [ { teamName: "Team name 1", points: 21 }, { teamName: "Team name 2", points: 11 }, ]; const max = Math.max(...teamScores.map((x) => x.points)); teamScores = teamScores.map((x) => ({...x, isHighest: x.points === max})); console.log(teamScores);
about 4 years ago · Juan Pablo Isaza Relatório

0

  1. map sobre cada objeto para obtener una matriz de todos los puntos.
  2. Encuentre el valor más alto de esa matriz. ( Math.max encuentra el valor más alto de una lista de valores. Debido a que le estamos pasando una matriz, tenemos que spread los valores).
  3. Devuelve una nueva matriz de objetos actualizados donde isHighest se establece en true o false si el valor de los points del objeto coincide con el valor highest .

 const scores = [ { teamName: 'Team name 1', points: 21 }, { teamName: 'Team name 2', points: 11 } ]; // Collate the points const points = scores.map(obj => obj.points); // Find the highest point const highest = Math.max(...points); // `spread` out the initial object into a new object // and add the new `isHighest` value const out = scores.map(obj => { return { ...obj, isHighest: obj.points === highest }; }); console.log(out);

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda