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

275
Vistas
Ordenar una matriz de objetos por múltiples criterios

Tengo una matriz de objetos (propiedades) que necesito ordenar según varios criterios, 4 en total. He manejado dos de ellos, pero el segundo y el tercero me están dando problemas.

El orden de clasificación debe ser:

Primero: si una propiedad tiene un estado de "Activo", eso va antes de una propiedad con un estado de "Escrow", este es fácil porque puedo hacerlo alfabéticamente ya que "activo" va antes de "escrow".

2º - Si una propiedad tiene un tipo de propiedad de "Multifamiliar" que va antes que el resto (no funciona)

3º - Si una propiedad tiene un estado de "Terreno" que va antes que el resto (pero después de Multifamiliar, no funciona)

4º - Ordenar por número de Unidades, de nuevo, este es fácil.

Aquí está mi código hasta ahora, estoy usando una microbiblioteca para ordenar matrices, pero las funciones lógicas habituales de Array.sort funcionarán aquí, la biblioteca se llama thenBy.js:

No solo la clasificación "Multifamiliar" y "Land" no funciona, sino que también se duplican las entradas... Realmente no estoy seguro de cómo abordar esta.

 const filtered_properties = [] filtered_properties.sort( firstBy(function(v1, v2) { if (v1.status > v2.status) { return 1; } else if (v1.status < v2.status) { return 0; } }) // Not working .thenBy(function(v1) { return ( v1["property-type"] && v1["property-type"][0].name === "Multifamily" ); }) // Not working .thenBy(function(v1) { return ( v1["property-type"] && v1["property-type"][0].name === "Land" ); }) .thenBy(function(v1, v2) { return v2.units - v1.units; }) );
 <script src="https://cdn.jsdelivr.net/npm/thenby@1.3.4/thenBy.min.js"></script>

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

0

Dependiendo de sus propiedades, puede comparar con la cadena superior deseada y tomar el delta de b - a de la comparación y, si necesita la cadena deseada en la parte inferior, cambie a y b .

Lo mismo se aplica a todas las demás comparaciones en las que un elemento debe ordenarse al principio.

 array.sort((a, b) => (b.status === 'Active') - (a.status === 'Active') || (b.type === 'Multifamily') - (a.type === 'Multifamily') || (b.status === 'Land') - (a.status === 'Land') || a.units - b.units );
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