Quiero ordenar los mensajes donde tanto lo importante es igual a 1 como lo leído es igual a 0 para colocarlos al comienzo de la matriz.
Tengo una matriz de estos objetos de mensaje:
{ archived: 0 draftMode: 0 entry_date: "Mar 22, 2022" important: 1 message: "Hello world" messageId: 1 pinned: 0 read: 0 subject: "test" }El código que estoy usando para ordenar es:
messages.sort((a, b) => (a.important > b.important && a.read < b.read ? -1 : 1))Suponiendo solo 0 y 1 (¿por qué no usar booleanos?), podría tomar el delta de los valores (también funciona para booleanos).
const messages = [ { important: 0, read: 0 }, { important: 0, read: 1 }, { important: 1, read: 0 }, { important: 1, read: 1 }, ]; messages.sort((a, b) => a.read - b.read || b.important - a.important ); console.log(messages); .as-console-wrapper { max-height: 100% !important; top: 0; }