TransWikia.com

Ordenar los objetos de un array a partir de una propiedad

Stack Overflow en español Asked by francisco javier lopez perez on November 24, 2021

Hola a todos y gracias por la ayuda de antemano, en esta ocasión necesito ordenar los objetos de un array a partir de una de sus propiedades.

Datos importantes

Se trata de un proyecto angular por lo cual necesito que la solución este adaptada al framework (typescript)

Ejemplo de objeto

   ordenes:
    0:
     cantidad: "1"
     estadopedido: "enviado a cocina"
     horapedido: "9:36:22 pm ,July 10th 2020"
     id: "62920c93-c2a1-44d5-a35b-87d8f2958598"
     idmesa: "2acfbd26-ddd9-4141-9aaf-85dce7082ca1"
     idproducto: "59b4f1ce-b2fc-47dd-b159-1b64e6215686"
     nombreproducto: "tocineta"
     preciototal: "3.20"
    1:
     cantidad: "1"
     estadopedido: "enviado a cocina"
     horapedido: "11:57:14 pm ,July 10th 2020"
     id: "62920c93-c2a1-44d5-a35b-87d8f2958598"
     idmesa: "2acfbd26-ddd9-4141-9aaf-85dce7082ca1"
     idproducto: "59b4f1ce-b2fc-47dd-b159-1b64e6215686"
     nombreproducto: "tocineta"
     preciototal: "3.20"
    2:
     cantidad: "1"
     estadopedido: "enviado a cocina"
     horapedido: "7:51:50 pm ,July 10th 2020"
     id: "62920c93-c2a1-44d5-a35b-87d8f2958598"
     idmesa: "2acfbd26-ddd9-4141-9aaf-85dce7082ca1"
     idproducto: "59b4f1ce-b2fc-47dd-b159-1b64e6215686"
     nombreproducto: "tocineta"
     preciototal: "3.20"

Solución esperada

La idea es ordenar los elementos en este caso 0, 1 y 2 en función de la hora en la que se realizo el pedido dando como resultado una lista ordenada de los pedidos desde el más antiguo al mas reciente (2, 0, 1).

One Answer

Como mencionaron en los comentarios, es indispensable que la fecha tenga un formato estándar. Cumpliendo este requisito, lo que yo haría es utilizar el prototype sort del objeto array (Imagino que los datos te llegan en un arreglo de objetos). array.prototype.sort es un metodo nativo de un arreglo que devuelve el mismo arreglo ordenado. Por ejemplo, utilizando el sistema unix timestamp como el formato de las fechas, pudieces realizas lo siguiente:

const items = [
    {
        cantidad: "1",
        estadopedido: "enviado a cocina",
        horapedido: "1595413924"
    },
    {
        cantidad: "3",
        estadopedido: "enviado a cocina",
        horapedido: "1595418504"
    },
    {
        cantidad: "2",
        estadopedido: "enviado a cocina",
        horapedido: "1595419009"
    }
]

items.sort(function (a, b) {
    // A va primero que B
    if (a.horapedido < b.horapedido)
        return -1;
    // B va primero que A
    else if (a.horapedido > b.horapedido)
        return 1;
    // A y B son iguales
    else 
        return 0;
});

console.log(items);

Aquí puedes encontrar mas información sobre el metodo sort

Answered by Alexander Yammine on November 24, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP