• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Pruebas Online
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

161
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, } ]
almost 3 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)

almost 3 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; }

almost 3 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)

almost 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda