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

137
Visualizações
Javascript obtiene el valor máximo agrupado por otro atributo

Hola, tengo una matriz que se ve así

 result.entities= [ {zs_numero: "1", "zs_coefficient": "2", "zs_score": "50"}, {zs_numero: "1", "zs_coefficient": "2", "zs_score": "55"}, {zs_numero: "2", "zs_coefficient": "4", "zs_score": "2"}, {zs_numero: "2", "zs_coefficient": "4", "zs_score": "10"}, {zs_numero: "3", "zs_coefficient": "3", "zs_score": "33"}, {zs_numero: "3", "zs_coefficient": "3", "zs_score": "35"}, ]

Quería obtener el puntaje máximo para cada "zs_numero" y luego multiplicar todos los puntajes máximos con el coeficiente para obtener un resultado final. Entonces, quiero obtener valores como este:

 newarray= [ {zs_numero: "1", "zs_coefficient": "2", "zs_score": "55"}, {zs_numero: "2", "zs_coefficient": "4", "zs_score": "10"}, {zs_numero: "3", "zs_coefficient": "3", "zs_score": "35"}, ]

y luego haga una variable que calcule todos los (zs_coficient*zs_score) y súmelos

Intenté esto pero no funcionó

 var newarray = [] result.entities.forEach(function (a) { if (!this[a.zs_numero]) { this[a.zs_numero] = { zs_numero: a.zs_numero, zs_coefficient: 0, zs_score: 0 }; newarray.push(this[a.zs_numero]); } this[a.zs_numero].zs_coefficient = a.zs_coefficient; this[a.zs_numero].zs_score = Math.max(this[a.zs_numero].zs_score, a.zs_score); }, Object.create(null)); console.log(newarray) for(var i = 0; i < newarray.length; i++){ max=max+newarray.zs_coefficient*newarray.zs_score }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Puede usar Array.reduce() para obtener el resultado deseado, creando un mapa con clave en zs_numero . Si no hay ningún objeto presente en la propiedad zs_numero o el zs_score es mayor que el valor existente, lo reemplazamos.

Podemos usar Array.reduce() nuevamente para calcular el total (suma de zs_coficient x zs_score);

 result = { entities: [ {zs_numero: "1", "zs_coefficient": "2", "zs_score": "50"}, {zs_numero: "1", "zs_coefficient": "2", "zs_score": "55"}, {zs_numero: "2", "zs_coefficient": "4", "zs_score": "2"}, {zs_numero: "2", "zs_coefficient": "4", "zs_score": "10"}, {zs_numero: "3", "zs_coefficient": "3", "zs_score": "33"}, {zs_numero: "3", "zs_coefficient": "3", "zs_score": "35"}, ] } const output = Object.values(result.entities.reduce ((acc, cur) => { if (!acc[cur.zs_numero] || (+cur.zs_score > +acc[cur.zs_numero].zs_score)) { acc[cur.zs_numero] = cur; } return acc; }, {})); console.log('Output:', output) const total = output.reduce((acc, cur) => { return acc + cur.zs_score * cur.zs_coefficient }, 0); console.log('Total score:', total);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Relatório

0

Aquí hay un bucle simple para resolver su problema.

 const entities= [ {zs_numero: "1", "zs_coefficient": "2", "zs_score": "50"}, {zs_numero: "1", "zs_coefficient": "2", "zs_score": "55"}, {zs_numero: "2", "zs_coefficient": "4", "zs_score": "2"}, {zs_numero: "2", "zs_coefficient": "4", "zs_score": "10"}, {zs_numero: "3", "zs_coefficient": "3", "zs_score": "33"}, {zs_numero: "3", "zs_coefficient": "3", "zs_score": "35"}, ] let finalResult = [] entities.map(d => { let index = finalResult.findIndex(p => p.zs_numero == d.zs_numero) if(index == -1) { finalResult.push(d) } else { if(parseInt(d.zs_score) > parseInt(finalResult[index].zs_score)) { finalResult[index] = {...d}; } } }) console.log(finalResult) let Total = 0; finalResult.map(d=> {Total += (d.zs_score * d.zs_coefficient)}) console.log(Total)

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