Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/10/2005, 18:52
Avatar de Cap.Buscapina
Cap.Buscapina
 
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 7 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
.