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

232
Vistas
Clasificación de matriz basada en la existencia de propiedades

Tengo una matriz, necesito ordenar la matriz en función de una propiedad, si existe.

 const arr = [{ "item_name": "Cake", "quantity": 1, }, { "item_name": "Choclate", "out_of_stock_detail": { "out_of_stock_quantity": 1 }, "quantity": 3, } ] let output = arr.sort((a, b) => { if (a.out_of_stock_detail) { return 1 } else { return -1 } }) console.log(output)

Salida esperada lo que estoy buscando obtener.

 const result = [{ "item_name": "Choclate", "out_of_stock_detail": { "out_of_stock_quantity": 1 }, "quantity": 3, }, { "item_name": "Cake", "quantity": 1, } ]
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Aquí hay una opción. Cree un valor numérico basado en la existencia de la propiedad y luego devuelva la comparación. También agregué un segundo tipo para que las cantidades más altas estén primero.

 const arr = [{ "item_name": "Cake", "quantity": 1, }, { "item_name": "Choclate", "out_of_stock_detail": { "out_of_stock_quantity": 1 }, "quantity": 3, }, { "item_name": "Vanilla", "out_of_stock_detail": { "out_of_stock_quantity": 1 }, "quantity": 9, } ] let output = arr.sort((a, b) => { let aa = a.hasOwnProperty('out_of_stock_detail') ? 1 : -1 let bb = b.hasOwnProperty('out_of_stock_detail') ? 1 : -1 return bb - aa; }).sort((a, b) => +b.quantity - +a.quantity) console.log(output)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Solo un enfoque ligeramente diferente al tomar un booleano y tomar el delta.

Por cierto, Array#sort ordena in situ (mutando la matriz).

 const array = [{ item_name: "Cake", quantity: 1 }, { item_name: "Choclate", out_of_stock_detail: { out_of_stock_quantity: 1 }, quantity: 3 }]; array.sort((a, b) => ('out_of_stock_detail' in b) - ('out_of_stock_detail' in a) ); console.log(array);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Denunciar

0

¿No acabas de mezclar el 1 y el -1?

 const arr = [ { "item_name": "Cake", "quantity": 1, }, { "item_name": "Choclate", "out_of_stock_detail": { "out_of_stock_quantity": 1 }, "quantity": 3, } ] let output = arr.sort((a,b) => { if(a.out_of_stock_detail){ return -1 }else { return 1 } }) console.log(output)

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