Foros del Web » Programando para Internet » Javascript »

Ordenar Array multidimencional por un campo con javascript

Estas en el tema de Ordenar Array multidimencional por un campo con javascript en el foro de Javascript en Foros del Web. Después de mucha lucha logre hacer una funciona para ordenar una array multidimencional con javascript : Código: /* Parametros: toOrderArray: Array a ordenar campo: valor ...
  #1 (permalink)  
Antiguo 19/04/2011, 16:42
Avatar de elmejorb  
Fecha de Ingreso: abril-2011
Mensajes: 2
Antigüedad: 13 años, 7 meses
Puntos: 2
Información Ordenar Array multidimencional por un campo con javascript

Después de mucha lucha logre hacer una funciona para ordenar una array multidimencional con javascript:

Código:
/* Parametros:
        toOrderArray: Array a ordenar 
	campo: valor numerico que corresponde a numero del campo 
*/

function orderMultiDimensionalArray (toOrderArray, campo) 
{
	position = new Array();
	newRow = new Array();
	jQuery.each(toOrderArray, function(key, row) {
			regis = row[campo];
			position[key]  = [regis, key];
			newRow[key] = toOrderArray[key];
	});

	position.sort();
	
	returnArray = new Array();
	jQuery.each(position, function(key, row) {
			pos = position[key][1];
			returnArray[key] = newRow[pos];
	});				
	
	return returnArray;
}
//Arreglo de ejemplo
friend = new Array();
friend[0] = ["515015964", "Andres Martinez"]; 
friend[1] = ["529179233", "Luz Prada"]; 
friend[2] = ["530163540", "Yokoi Diaz"]; 
friend[3] = ["544049594", "Zuri Meraz"]; 

//obtenemos el arreglo ordenado por el campo del nombre
listaordenada = orderMultiDimensionalArray(friend, 1);
Espero que les sea de mucha ayuda.

Última edición por elmejorb; 19/04/2011 a las 16:48
  #2 (permalink)  
Antiguo 19/04/2011, 18:27
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: Ordenar Array multidimencional por un campo con javascript

buenas,
sea como sea, se te agradece la aportacion. pero tengo una observacion y es un debate que de vez en cuando aparece, ¿es necesario utilizar una libreria para realizar este tipo de tareas? de hecho, si el usuario ya esta empleando jquery para otras tareas, pues no hay problema. mientras tanto lo veo innecesario. el mismo se puede hacer simplemente usando la funcion sort de los arrays.
Código:
friend = [
["544049594", "Yokoi Diaz"],
["529179233", "Andres Martinez"],
["515015964", "Zuri Meraz"],
["530163540", "Luz Prada"]
]

friend.sort(function(a,b){
return a[1] > b[1]; // orden ascendente por los nombres;
});
de forma similar se puede hacer para ordenar por los numeros solo cambiando el indice. de todos modos, para hacerlo mas funcional y abstracto puedes crear una funcion mas compleja donde se pueda hacer ordenacion ascendente y descendente con procesos de comparacion segun el tipo, string o numero.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 19/04/2011, 18:39
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Ordenar Array multidimencional por un campo con javascript

Que tal elmejorb,

primero gracias por el aporte y segundo, porque no lo integras a jQuery ya que es para esta libreria ?, algo asi:


Código Javascript:
Ver original
  1. (function($){
  2.  
  3. $.fn.orderMultiDimensionalArray(toOrderArray, campo) {
  4.     position = new Array();
  5.     newRow = new Array();
  6.     $.each(toOrderArray, function(key, row) {
  7.             regis = row[campo];
  8.             position[key]  = [regis, key];
  9.             newRow[key] = toOrderArray[key];
  10.     });
  11.  
  12.     position.sort();
  13.    
  14.     returnArray = new Array();
  15.     $.each(position, function(key, row) {
  16.             pos = position[key][1];
  17.             returnArray[key] = newRow[pos];
  18.     });            
  19.    
  20.     return returnArray;
  21. }
  22.    
  23. })(jQuery);

y para utilizarlo:

Código Javascript:
Ver original
  1. friend = new Array();
  2. friend[0] = ["515015964", "Andres Martinez"];
  3. friend[1] = ["529179233", "Luz Prada"];
  4. friend[2] = ["530163540", "Yokoi Diaz"];
  5. friend[3] = ["544049594", "Zuri Meraz"];
  6.  
  7. listaordenada = jQuery.fn.orderMultiDimensionalArray(friend, 1);

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: multidimencional, ordenararray
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:17.