Necesito ordenar una matriz de objetos en javascript (proyecto angular).
Mi objeto es bastante simple, solo una capa de algunas cadenas e enteros:
{ id: 7683, base: "example", value: 1000000, poster: "example", price: 100, itemCount: 49 }Habrá 50 000 de estos objetos, y los estoy mostrando en una tabla, donde el usuario debería poder ordenar por cualquiera de las propiedades (los estoy paginando para ahorrar recursos durante el renderizado).
Mi implementación actual es el alg de ordenación javascript base con una función de ordenación personalizada:
this.myList.sort((a,b) => a.id - b.id)Actualmente, esto toma alrededor de 25 segundos, que no es la experiencia de usuario que busco. Probé una implementación de tabla de datos, que parecía funcionar rápidamente, así que estoy tratando de averiguar por qué la mía no es tan rápida.
¿Cuál es la forma más rápida de lograr mi clasificación? ¿Necesito escribir una ordenación rápida personalizada? Si es así, ¿le importaría explicar qué pasa con la clasificación predeterminada con una función personalizada que lo hace más lento que algo que podría escribir yo mismo? Gracias
Editar:
Gracias a quienes destacaron que no debería tardar tanto. No estaba seguro de un marco de tiempo razonable para un tipo como este. Después de crear algunos casos de prueba, parece que fue la pintura/renderización de los elementos de la interfaz de usuario lo que tomó el tiempo (a pesar de que el depurador de Chrome dice que todo era secuencias de comandos, tal vez mi comprensión de esto sea incorrecta). Gracias por tu ayuda.
Te recomiendo usar mat-sort es muy rápido.
Otras cosas que puede hacer para mejorar la clasificación:
pruebe alguna solución como el algoritmo quicksort: https://github.com/duereg/js-algorithms/blob/master/lib/algorithms/11-sorting/quickSort.js