Mostrando entradas con la etiqueta Arreglos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Arreglos. Mostrar todas las entradas

lunes, 9 de febrero de 2009

Ordenar array utilizando multiples elementos

Supongamos que tenemos un arreglo que tiene un objeto que tiene dos atributos llamados red_cards y yellow_cards (estos dos atributos son numericos), ahora lo que queremos hacer es ordenar el array primero por la cantidad de tarjetas rojas y luego por la cantidad de amarillas.

Lo podemos hacer de la siguiente manera:

array.sort! {|x, y| ((y.red_cards * 1000) + y.yellow_cards) <=> ((x.red_cards * 1000) + x.yellow_cards) }

Elegimos 1000 por que sabemos que nunca se va a tener ese numero de tarjetas.

martes, 28 de octubre de 2008

Borrar elementos de un array

Para borrar todos los elementos de un array que cumplan con determinada condición ruby nos ofrese delete_if, este metodo se utiliza de la siguiente forma

[1,2, 10, 20].delete_if { |element| element > 10}  

Esta operación nos eliminara del array todos los elementos mayores que 10 en este caso el 20, el resultado de este metodo es otro array con el resultado de la operacion en nuestro caso [1,2,10]

Otro ejemplo podria ser el siguiente

["a", "z", "d", "h"].delete_if { |element| element > "a"} 

Esto nos retornaria un array cuyo unico elemento es la "a"



jueves, 23 de octubre de 2008

Iterar un array con los indicies

Ruby tiene una funcion que nos permite recorrer un array o un hash, esta función lo que hace es devolvernos los elementos y el indice en el cual se encuentran estos elementos.

["a", "b", "1"].each_with_index do |elemento, indice|
  "Aca hacemos lo que queremos con el elemento #{elemento} y con el indice #{indice}"
end

Como eliminar elementos repetidos

Se pueden utilizar funciones ya predefinidas para eliminar los elementos repetidos de un array, las dos funciones que se pueden utilizar son las siguientes unique y unique!, ambas aplican sobre un arreglo

unique se utiliza para eliminar los elementos repetidos de un arreglo y retorna el arreglo resultante 

[1,1,2,2,3].unique => [1,2,3]

unique! se utiliza para eliminar los elementos repetidos en un arreglo (aplican sobre el arreglo mismo), y retorna nil en caso de que no alla ningun elemento repetido y los elementos unicos cuando ocurre lo contrario

[1,1,4,5,4].unique! => [1,4,5]
[1,2,3,4].unique! => nil 

miércoles, 22 de octubre de 2008

Como borrar los elementos nil de un arreglo

Cuando queremos eliminar todos los elementos nulos(nil) de un arreglo podemos utilizar la funcion compact o compact!

compact se aplica sobre un array y nos retorna un array sin los elementos nil

[1, nil, "a"].compact => [1, "a"]

compact! también se aplica sobre un array, lo que hace es remover todos los elementos nil del mismo(los cambios se realizan sobre el array que estamos utilizando) y retorna los elementos del array que quedaron o nil en caso de que no alla ningun cambio

[2, 4, 8].compact! => nil
[2, nil, 8, nil].compact! => [2, 8]