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

120
Visualizações
¿Cómo ordenar condicionalmente y desplazar a la derecha una matriz JSON?

Tengo una matriz JSON de la siguiente manera:

 [{ "name": "ABC", "default": false, "details": [ { "detail1": "value1" }, { "detail2": "value2" } ] }, { "name": "PQR", "default": false, "details": [ { "detail3": "value3" }, { "detail4": "value4" } ] }, { "name": "XYZ", "default": true, "details": [ { "detail5": "value5" }, { "detail6": "value6" } ] }]

Ahora, si el valor default es true , quiero que sea el primer elemento de la matriz y el resto de los elementos deben ordenarse alfabéticamente según el name . Solo uno de los elementos tendrá el default como true o todos los elementos tendrán el default como false .

El JSON esperado después de la clasificación debe ser:

 [{ "name": "XYZ", "default": true, "details": [ { "detail5": "value5" }, { "detail6": "value6" } ] }, { "name": "ABC", "default": false, "details": [ { "detail1": "value1" }, { "detail2": "value2" } ] }, { "name": "PQR", "default": false, "details": [ { "detail3": "value3" }, { "detail4": "value4" } ] }]

He probado este código para ordenar la matriz JSON:

 jsonArray.sort( function( a, b ) { a = a.name.toLowerCase(); b = b.name.toLowerCase(); return a < b ? -1 : a > b ? 1 : 0; });

Pero no puedo averiguar cómo verificar el valor default y ordenarlo en consecuencia. ¿Cómo logro el resultado esperado?

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

0

Estás en el camino correcto. Simplemente modifique la función para incluir la verificación por default :

 jsonArray.sort( function( a, b ) { const name1 = a.name.toLowerCase(); const name2 = b.name.toLowerCase(); return (b.default - a.default) || ((name1 > name2) - (name2 > name1)) });

Tengo el código rápido para la comparación de cadenas desde aquí: https://stackoverflow.com/a/17765169/2244262

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