Necesito usar lodash para implementar una clasificación personalizada basada en la clasificación, luego por el momento de la creación, con elementos creados más recientemente con la misma clasificación que tienen un índice más bajo en la matriz. Estoy bastante seguro de que necesito usar orderBy , pero no sé cómo agregar la parte de clasificación de fechas. Esto es lo que tengo:
let sorted = _.orderBy(this.followed_requests, function(element){ const rank = { "INCOMPLETE.NEW": 1, "INCOMPLETE.IN_PROGRESS":2, "INCOMPLETE.LATER":3} return rank[element["status"]]})Me gustaría que mi salida tenga algo como:
sorted = [{status:"INCOMPLETE.NEW", created_at: "2021-05-14T14:48:00.000Z"}, {status:"INCOMPLETE.NEW", created_at: "2021-05-13T14:48:00.000Z"}, {status:"INCOMPLETE.IN_PROGRESS", created_at: "2021-05-14T14:48:00.000Z"}, {status:"INCOMPLETE.IN_PROGRESS", created_at: "2021-05-13T14:48:00.000Z"}, {status:"INCOMPLETE.LATER", created_at: "2021-05-14T14:48:00.000Z"}, {status:"INCOMPLETE.NEW", created_at: "2021-05-13T14:48:00.000Z"} ]orderBy acepta una serie de funciones y direcciones de clasificación. Hay varias formas en que esto podría implementarse, pero dado que ambos valores de clasificación requieren transformación, parece una buena opción.
const reqs = [ { status: "INCOMPLETE.LATER", created_at: "2021-05-14T14:48:00.000Z" }, { status: "INCOMPLETE.NEW", created_at: "2021-05-13T15:48:00.000Z" }, { status: "INCOMPLETE.IN_PROGRESS", created_at: "2021-05-14T14:48:00.000Z" }, { status: "INCOMPLETE.IN_PROGRESS", created_at: "2021-05-13T15:48:00.000Z" }, { status: "INCOMPLETE.NEW", created_at: "2021-05-14T16:48:00.000Z" }, { status: "INCOMPLETE.NEW", created_at: "2021-05-13T14:48:00.000Z" }, ] const rank = { "INCOMPLETE.NEW": 1, "INCOMPLETE.IN_PROGRESS": 2, "INCOMPLETE.LATER": 3, } let sorted = _.orderBy(reqs, [ i => rank[i.status], i => new Date(i.created_at) ], ["asc", "asc"]) console.log(sorted) <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>