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

164
Visualizações
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 Respostas
Responde à pergunta

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 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