Comunidad de diseño web y desarrollo en internet online

Ordenar array bidimensional de muchos elementos

Citar            
MensajeEscrito el 01 Jun 2007 07:29 am
Lo primero saludar a tod@s ya que este es mi primer post en este foro.
Lo segundo contaros mi problema a ver si me podeis ayudar :?

Tengo un array bidimensional que maneja alrededor de 200 elementos, los cuales a su vez estan compuestos por 5 o 6 elementos mas.

Para mostrarlos en pantalla he creado una funcion la cual los ordena mediante sortOn

arrayOrdenada=arrayRegistros.sortOn(referencia , Array.NUMERIC);

y despues hago un bucle :

for (i=0;i<arrayOrdenada.length;i++)

que va colocando en un grid los resultados.
La primera vez q los muestra, tambien llamo a la misma funcion, no hay problema, pero cuando pincho para que lo ordene por algun otro campo y vuelve a llamar a la funcion, se bloquea y me aparece el mensaje "hay un script que esta ralentizando su PC.......", o algo asi.

El problema es ordenarla con sortOn conteniendo tantos elementos?
Hay alguna forma mejor de hacerlo?

Gracias de antemano

Por Radio_Bemba

1 de clabLevel



 

msie
Citar            
MensajeEscrito el 01 Jun 2007 09:18 am
Cambia esta linea:

Código :

for (i=0;i<arrayOrdenada.length;i++) 

por estas dos:

Código :

arrayLength = arrayOrdenada.length;
for (var i=0; i<arrayLength; i++) 


Eso acelerará bastante el script sobre todo si el array tiene un tamaño considerable.
No obstante creo que hay otro error de bucle que no es posible determinar con lo que muestras.
Si dice que ralentiza el script y pide anularlo, dale a NO y espera, si vuelve a mostrarlo otro NO y si vuelve a las andadas.........error de bucle seguro. Habrá que mirar que hace ese bucle y como.
Lo mas probable es que el valor de contador ( i ) quede "perdido" por alguna instrucción en la primera llamada.

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 01 Jun 2007 10:18 am
Muchas gracias por la respuesta Teseo, y por haberla hecho tan rapidamente.
Voy a probar lo que dices. El problema debe estar en el bucle, pero es raro, porque solo falla en mi ordenador q tiene mala conexion, en otros con buena conexion no falla. De hecho en el mio propio, si lo pruebo con un array de menos elementos si q va bien.

Voy a ver si mejora con lo que me has dicho.

Saludos :wink:

Por Radio_Bemba

1 de clabLevel



 

msie
Citar            
MensajeEscrito el 01 Jun 2007 12:07 pm
Esos síntomas que dices ( contando con que la primera vez lo hace bien)......indica esto:
Con pocos elementos o con velocidad alta de proceso ( lo que es al caso idéntico) el bucle termina completamente antes de la siguiente llamada a la función.
Y en caso contrario el bucle no ha terminado y la variable i se mantiene en el último valor que tiene antes de la segunda llamada o se confunde con otra variable i asignada de nuevo dentro del mismo, o la función se está ejecutando doblada.
Ten en cuenta que si no son linealmente temporales, cada llamada a una función ( mediante un botón o similar) es independiente (distinto evento) y se pueden procesar al mismo tiempo....deberías anular la llamada anterior a la función al hacerse una nueva.

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.