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
¿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 Respuestas
Responde la pregunta

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