var array = [{value:"13",type:"Fruit"},{value:"61",type:"Animal"}, {value:"19",type:"Fruit"},{value:"71",type:"Animal"}, {value:"12",type:"Fruit"},{value:"15",type:"Fruit"}, {value:"11",type:"Plant"},{value:"10",type:"Fruit"}, {value:"16",type:"Plant"}]¿Cuál es la forma mejor u optimizada de ordenar esta matriz de modo que obtenga todos los elementos de tipo Fruit primero y luego los elementos de tipo Animal (seleccionando elementos del final de la matriz)?
expectedOutput = [{value:"10",type:"Fruit"}, {value:"15",type:"Fruit"},{value:"12",type:"Fruits"}, {value:"19",type:"Fruit"},{value:"13",type:"Fruit"}, {value:"71",type:"Animal"},{value:"61",type:"Animal"}, {value:"16",type:"Plant"},{value:"11",type:"Plant"}]Nota: - No necesito ordenarlo alfabéticamente. Debe ordenarse según el tipo específico.
Puede almacenar el orden de las propiedades de type en una matriz y luego restar el índice de la propiedad de type al ordenar para determinar la precedencia:
const order = ["Fruits", "Animal"] var array = [{value:"13",type:"Fruit"},{value:"61",type:"Animal"}, {value:"19",type:"Fruit"},{value:"71",type:"Animal"}, {value:"12",type:"Fruit"},{value:"15",type:"Fruit"}] const sorted = array.sort((a,b) => order.indexOf(a.type) - order.indexOf(b.type)) console.log(sorted)