He implementado este tipo:
<tbody> {results.sort((a, b) => a.status > b.status ? 1 : -1).map(el => { return ( <tr> <td>{el.id}</td> <td>{el.amount}</td> <td>{el.time}</td> <td>{el.status}</td> </tr> ); })} </tbody>Así que ahora los tengo ordenados por estado de la siguiente manera: activo, actualizado, esperando. El problema es que los quiero ordenados por activos, en espera, actualizados. ¿Cómo puedo conseguir esto?
Esta es mi matriz de objetos:
const data = [ { id: 1, title: "Order 1", amount: 3, status: "active" }, { id: 2, title: "Order 2", amount: 5, status: "waiting" }, { id: 3, title: "Order 3", amount: 4, status: "updated" }, { id: 4, title: "Order 4", amount: 3, status: "active" } ];Puede usar indexOf para una matriz ordenada, con este enfoque:
const data = [{ id: 1, title: "Order 1", amount: 3, status: "active" }, { id: 2, title: "Order 2", amount: 5, status: "waiting" }, { id: 3, title: "Order 3", amount: 4, status: "updated" }, { id: 4, title: "Order 4", amount: 3, status: "active" } ]; const statusOrdered = ['active', 'waiting', 'updated'] data.sort((a, b) => statusOrdered.indexOf(a.status) - statusOrdered.indexOf(b.status)); console.log(data)Pruebe algo como esto para su función de clasificación.
(a,b) => { let ranking = { active:1, waiting:2, updated:3, } return ranking[a.status] - ranking[b.status] }