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

160
Vistas
Ordenar la matriz no funciona correctamente cuando algunos elementos tienen valores desconocidos

Digamos que tengo una variedad de objetos

 [ { "name": "John", "height": "172", "weight": "87" }, { "name": "Tom", "height": "167", "weight": "67" }, { "name": "James", "height": "156", "weight": "uknown" }, { "name": "Jeremy", "height": "unknown", "weight": "85" }, ]

Ahora, si quiero ordenarlos por altura, puedo hacer persons.sort((a, b) => b.height - a.height); igualmente si quiero ordenarlos por peso puedo hacer lo mismo pero con peso persons.sort((a, b) => b.weight - a.weight);

Hasta ahora, esto funcionaría bien, sin embargo, algunos de los valores son desconocidos, y si mantengo esta matriz en algún estado y los clasifico por los valores desconocidos, lo estropeo y no se ordena correctamente. En un caso en el que hay muchos más objetos que 4, se ordena hasta cierto punto, pero tan pronto como toca un objeto con una propiedad desconocida, lo estropea y el resto de la matriz no se ordena correctamente. ¿Cómo puedo superar esto? ¿Quizás haciendo algo empujando los artículos con valor desconocido en la parte inferior?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Todo lo que tiene que hacer es manejar los casos específicos cuando se unknown la altura/peso y devolver el valor apropiado

Por ejemplo:

 const items = [ { "name": "John", "height": "172", "weight": "87" }, { "name": "Tom", "height": "167", "weight": "67" }, { "name": "James", "height": "156", "weight": "uknown" }, { "name": "Jeremy", "height": "unknown", "weight": "85" }, { "name": "Jeremy2", "height": "162", "weight": "85" }, { "name": "Jeremy3", "height": "unknown", "weight": "85" }, ]; items.sort((a,b) => { if(b.height === 'unknown' && a.height ==='unknown') return 0; else if(b.height === 'unknown') return -1; else if(a.height === 'unknown') return 1; else return a.height - b.height; }); console.log(items);

La función de comparación compare(a, b) funciona así:

 if return value sort > 0, sort b before a. else if return value sort < 0, sort a before b. else if return value === 0 keep original order of a and b.

Enlace MDN

Editar:

Si se trata de cadenas separadas por comas, se convierte primero en número:

 items.sort((a,b) => { if(b.height === 'unknown' && a.height ==='unknown') return 0; else if(b.height === 'unknown') return -1; else if(a.height === 'unknown') return 1; else return parseFloat(a.height.replace(/,/g, '')) - parseFloat(b.height.replace(/,/g, '')) });

Fuente

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