Aquí hay un ejemplo de mi matriz:
const database = [ { name: item1, errors: true }, { name: item2, factors: { rank: 1 } }, { name: item3, factors: { rank: 2 } }, { name: item2, errors: true }, ];Esto es lo que quiero:
const sorted_database = [ { name: item3, factors: { rank: 2 } }, { name: item2, factors: { rank: 1 } }, { name: item1, errors: true }, { name: item2, errors: true }, ];Si bien esta parte de la publicación puede no ser necesaria, para aclarar, quiero que la matriz se ordene con el rango descendente y, si no está definido, permanezca en algún orden aleatorio a continuación. Sin embargo, necesito conservar todos los datos. Intenté simplemente usar sort y obtuve un error de propiedad indefinida. Luego intenté hacer dos juegos diferentes, pero por alguna razón rara vez coincidían. Buscando una solución elegante, alguien quizás sepa esto que aún no he aprendido.
Podría buscar primero los factors y luego ordenarlos por rank .
const database = [{ name: 'item1', errors: true }, { name: 'item2', factors: { rank: 1 } }, { name: 'item3', factors: { rank: 2 } }, { name: 'item2', errors: true }]; database.sort((a, b) => !a.factors - !b.factors || b.factors?.rank - a.factors?.rank ); console.log(database); .as-console-wrapper { max-height: 100% !important; top: 0; }