Foros del Web » Programando para Internet » Javascript »

necesito opiniones sobre funcion

Estas en el tema de necesito opiniones sobre funcion en el foro de Javascript en Foros del Web. Hola: Necesito opiniones (pero no demaciado duras ) sobre la funcion ordenar Antes del codigo quiero aclarar que estuve buscando por la web y me ...
  #1 (permalink)  
Antiguo 02/10/2005, 18:52
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
necesito opiniones sobre funcion

Hola:

Necesito opiniones (pero no demaciado duras ) sobre la funcion ordenar

Antes del codigo quiero aclarar que estuve buscando por la web y me topé con muchas paginas ablando de la ordenacion de array (inclusive algunas protagonizadas por caricato,furoya,etc), pero como no soy demasiado entendido en esto de sort(),burbuja, y que se yo cuantos terminos mas, me puse a hacer mi propia funcion de ordenacion de arrays bidimensionales (tal vez un poco rudimentaria).

El ejemplo solo ordena ascendentemente, pero ya le incorporaré la oredenacion descendente y si me da el cuero, ordenar por dos columnas.

Código PHP:
<html>
<
head>
<
title>Ejemplo de JavaScript</title>
<
script language="JavaScript">
archivo=new Array();
archivo[0]=new Array("pagina_uno.html","pagina_dos.html","pagina_tres.html","pagina_cuatro.html","pagina_cinco.html");
archivo[1]=new Array("fecha_1","fecha_2","fecha_3","fecha_4","fecha_5");
archivo[2]=new Array("1kb","2kb","3kb","4kb","5kb");

function 
ordenar(col){
array_temp=new Array();
temp_array=new Array();
//genera array temporal con el valor del array primario mas un numero correlativo
for (x=0;x<archivo[col].length;x++){
temp_array[x]=archivo[col][x]+"*"+x;
}
ordenando=temp_array.sort();//ordena ascendentemente los valores del array temporal
for (y=0;y<temp_array.length;y++){
inicio=temp_array[y].indexOf("*");
ubicacion=ordenando[y].slice(inicio+1,ordenando[y].length);

ordenando[y]=ubicacion;// revalua array temporal con la ubicacion de ordenacion del array primari0
}

for (
z=0;z<archivo.length;z++){//reordena los mismos array utilizando uno temporal
for (q=0;q<ordenando.length;q++){
array_temp[q]=archivo[z][ordenando[q]];
}
for (
w=0;w<array_temp.length;w++){
archivo[z][w]=array_temp[w];
}
}
generar_lista();
}


function 
generar_lista(){
obj=document.getElementById('listado');
if (
obj){
document.getElementById('tabla').removeChild(obj);
}

cuantos_ar=archivo[0].length;
cuantas_col=archivo.length;
var 
MyTable;
var 
NewRow;
var 
NewCell;

MyTable document.createElement('table');
MyTable.id="listado";
for (
x=0;x<cuantos_ar;x++){
NewRow document.createElement('tr');
for (
y=0;y<cuantas_col;y++){
NewCell document.createElement('td')
NewCell.width 150;
NewCell.innerHTML =archivo[y][x];
NewRow.appendChild(NewCell);
}

MyTable.appendChild(NewRow); 
}
document.getElementById('tabla').appendChild(MyTable);
}

</script>
</head>
<body onload="generar_lista()">
<input type="button" name="nombre" value="Nombre   " onclick="ordenar(0)" style="width:150px;">
<input type="button" name="fecha" value="Fecha   " onclick="ordenar(1)" style="width:150px;">
<input type="button" name="peso" value="Peso   " onclick="ordenar(2)" style="width:150px;">
<span id="tabla"></span>
</body>
</html> 

No está en discución la funcion generar_lista (que depaso no funca en IE), sino ,si es viable la utilizacion de la funcion ordenar, si es demaciada pesada para el cliente , o si es simplemente una porquería
__________________
by Capitán Buscapina
.
  #2 (permalink)  
Antiguo 03/10/2005, 02:57
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Me parece muy interesante , y justamente se trata de un tema que no recuerdo haber tratado en esos mensajes que comentas...

Lo que pienso que deberías hacer es quitar la generación del array del propio método de ordenación, y en tal caso hacer 2 llamadas:
onclick="ordenar(1); generar_lista()"

Y por otro lado te animo a que utilices "prototipos" que ayudan a generalizar en este caso la ordenación para cualquier variable del tipo Array (ej: archivo.ordenar(0))

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 03/10/2005, 09:32
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
un buen enlace que enconte (aunque un poco complicado para nabos como yo) es http://www.geocities.com/doc_iacobus/sort.html. tal vez a alguien le sirva.

sobre el tema de prototype, leeré y veré que puedo hacer, ya que no requiero una super rutina para ordenar miles de datos.

gracias, por ahora

pd: algunos enlaces dentro del foro sobre ordenar arrays y demas yerbas
http://www.forosdelweb.com/f13/metodos-arrays-250294/
http://www.forosdelweb.com/f13/manipular-array-247815/
__________________
by Capitán Buscapina
.

Última edición por Cap.Buscapina; 03/10/2005 a las 09:39
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:41.