Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

112
Views
Ordenar matriz de 50 000 objetos - Javascript

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.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Te recomiendo usar mat-sort es muy rápido.

Otras cosas que puede hacer para mejorar la clasificación:

  1. Si puede, ordenar por servidor es mucho más rápido y fácil.
  2. Compruebe cuánto tarda la solicitud de la API en obtener los datos por completo: "25 segundos" puede deberse a un formato de archivo/red lento (como una cadena que debe analizarse/gzip y más)... y no a la ordenación en sí.
  3. Renderice los datos solo después de que los datos ya estén ordenados (como ordenar en rxjs pipe/*ngIf...).
  4. Puede usar trackBy para acelerar un poco el proceso.
  5. Puede guardar los datos de la primera página del paginador en localStorage; luego, en la segunda vez, puede mostrar al usuario la primera página (desde localStorage), mientras clasifica "detrás de la cortina" y vuelve a presentar los datos completos.
  6. Hay algunas soluciones más que dependen de la aplicación que tenga, por ejemplo, si es una aplicación pequeña con datos relacionados, puede ordenar los datos durante la inicialización de la aplicación APP_INITIALIZER
  7. La tabla/paginador/clasificación de material angular puede acelerar mucho el pedido: este ejemplo de enlace examina 23,575 objetos.
about 4 years ago · Juan Pablo Isaza Report

0

pruebe alguna solución como el algoritmo quicksort: https://github.com/duereg/js-algorithms/blob/master/lib/algorithms/11-sorting/quickSort.js

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!