Hay varios métodos que nos permiten eliminar elementos de un arreglo en Ruby, según nuestras necesidades utilizaremos uno u otro.
El primer método que nombraremos nos permite eliminar un elemento de una determinada posición del Array.
arreglo = [10, 20, 30, 20, 50, 20] arreglo.delete_at(2) print arreglo # [10, 20, 20, 50, 20]
Se elimina el tercer elemento del array. Recordar que el primer elemento de un arreglo es el cero.
El segundo método de la clase Array se llama delete y nos elimina todos los elementos que coinciden con la información que le pasamos en el parámetro.
arreglo = [10, 20, 30, 20, 50, 20] arreglo.delete(20) print arreglo # [10, 30, 50]
Cuando llamamos al método delete y le pasamos el valor 20 luego se eliminan 3 elementos, es decir todos aquellos que coinciden.
El siguiente método hay que pasar un bloque y disponer una condición, todos los elementos que cumplen dicha condición son eliminados del Array.
arreglo = [10, 20, 30, 20, 50, 20] arreglo.delete_if {|elemento| elemento <= 20} print arreglo # [30, 50]
Es decir todos los elementos del Array que tienen una información menor o igual a 20 son eliminados.
Cargar en un arreglo 5 enteros por teclado, luego borrar todos los elementos iguales al último, inclusive el último.
arreglo = [] x = 0 while x < 5 print "Ingrese un valor entero:" valor = gets.to_i arreglo << valor x = x + 1 end puts "Arreglo inicial" print arreglo, "\n" arreglo.delete(arreglo[-1]) puts "Arreglo luego de borrar todos los que coinciden con el último" print arreglo
Primero cargamos 5 enteros en el arreglo:
while x < 5 print "Ingrese un valor entero:" valor = gets.to_i arreglo << valor x = x + 1 end
Llamamos al método delete y le pasamos el valor del último elemento del arreglo, como sabemos si indicamos el subíndice -1 en el arreglo estamos accediendo al último:
arreglo.delete(arreglo[-1])
Podemos indicar también con la sintaxis:
arreglo.delete(arreglo[4])
El método delete retorna nil (nulo) si no hay ningún elementos a borrar:
arreglo = [10, 20, 30, 20, 50, 20] resu = arreglo.delete(120) if resu == nil puts "No hay elementos con el valor 120 en el arreglo #{arreglo}" end
En este caso el if se verifica verdadero ya que el valor 120 no está en el Array.
Otro método útil de la clase Array es clear que tiene por objetivo eliminar todos los elementos del arreglo:
arreglo = [10, 20, 30, 20, 50, 20] puts arreglo.length # 6 arreglo.clear puts arreglo.length # 0
ejercicio077.rb arreglo = [] x = 0 while x < 5 print "Ingrese un valor entero:" valor = gets.to_i arreglo << valor x = x + 1 end puts "Arreglo inicial" print arreglo, "\n" arreglo.delete_if{ |elemento| elemento >= 10 } puts "Arreglo luego de borrar todos los elementos mayores o iguales a 10" print arreglo ejercicio078.rb arreglo = [10, 3, 54, 22, 23, 66, 12, 55, 233, 2] puts "Arreglo original #{arreglo}" arreglo.delete_if {|elemento| elemento % 2 == 0} puts "Arreglo luego de borrar los elementos pares #{arreglo}" arreglo.delete_at(0) arreglo.delete_at(arreglo.length-1) puts "Arreglo luego de borrar el primer y último elemento #{arreglo}"