Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

119
Vistas
obtener el elemento más alto en una matriz bidimensional

tengo esta matriz:

 const myArray = [["Cow", 3], ["Pig", 5], ["Pig", 10], ["Pig", 4], ["Chicken", 1], ["Cow", 1], ["Cow" , 12], ["Cow", 11], ["Chicken", 12]]

y quiero convertirme en esto: (solo lo mas alto de cada uno)

 [ [ 'Pig', 10 ], [ 'Cow', 12 ], [ 'Chicken', 12 ] ]

pero con mi código no puedo obtener el último, no puedo encontrar por qué aunque

 const myArray = [["Cow", 3], ["Pig", 5], ["Pig", 10], ["Pig", 4], ["Chicken", 1], ["Cow", 1], ["Cow" , 12], ["Cow", 11], ["Chicken", 12]] function getHighest() { var onlyHighest = []; myArray.sort( function(a,b) { if (a[0] == b[0]) return a[1] < b[1] ? -1 : 1; return a[0] < b[0] ? 1 : -1; } ); myArray.forEach((a, i) => { var i = i+1; if (i < myArray.length) { if (a[0] != myArray[i][0]){ onlyHighest.push([a[0], a[1]]); } } }); return console.log(onlyHighest) // [ [ 'Pig', 10 ], [ 'Cow', 12 ] ] }
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Use un objeto para contener el valor más alto actual para cada animal. Recorra la matriz, reemplazando el valor cuando sea más alto que el valor en el objeto.

 const myArray = [["Cow", 3], ["Pig", 5], ["Pig", 10], ["Pig", 4], ["Chicken", 1], ["Cow", 1], ["Cow" , 12], ["Cow", 11], ["Chicken", 12]] function getHighest(array) { let obj = {}; array.forEach(([key, value]) => { if (key in obj) { if (value > obj[key]) { obj[key] = value; } } else { obj[key] = value; } }); return Object.entries(obj); } console.log(getHighest(myArray));

about 4 years ago · Juan Pablo Isaza Denunciar

0

Su

 myArray.forEach((a, i) => { var i = i+1; if (i < myArray.length) {

está causando el problema y es bastante confuso. Si el último fragmento ordenado de la matriz contiene solo 2 elementos, esa condición no se cumplirá, por lo que no se enviará nada de ese fragmento.

Una solución rápida sería empujar incondicionalmente el elemento original si es el último en la matriz.

 myArray.forEach((a, i) => { if (i === myArray.length - 1) {

Una mejor refactorización sería agrupar la entrada en un objeto que mantenga el valor más grande para cada propiedad, sin necesidad de clasificación.

 const myArray = [["Cow", 3], ["Pig", 5], ["Pig", 10], ["Pig", 4], ["Chicken", 1], ["Cow", 1], ["Cow" , 12], ["Cow", 11], ["Chicken", 12]] const grouped = {}; for (const [prop, num] of myArray) { grouped[prop] = Math.max(num, grouped[prop] ?? -Infinity); } const onlyHighest = Object.entries(grouped); console.log(onlyHighest);

about 4 years ago · Juan Pablo Isaza Denunciar

0

¿Qué tal una clasificación simple?

 function funk() { let a = [["Cow", 3], ["Pig", 5], ["Pig", 10], ["Pig", 4], ["Chicken", 1], ["Cow", 1], ["Cow", 12], ["Cow", 11], ["Chicken", 12]]; let r = a.sort((a, b) => { return b[1] - a[1] })[0]; Logger.log(r); } Execution log 12:37:11 PM Notice Execution started 12:37:11 PM Info [Cow, 12.0] 12:37:12 PM Notice Execution completed
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda