2011-02-15 21 views

Respuesta

51

Puede utilizar cualquiera new_array = array.reject {|x| x < 3} (reject devuelve una nueva matriz) o array.reject! {|x| x < 3} (aka reject!delete_if modifica la matriz en su lugar).

También está el (algo más común) select método, que actúa como reject salvo que se especifique la condición de mantener los elementos, no rechazar ellos (es decir, para deshacerse de los elementos de menos de 3, tendrá que utilizar new_array = array.select {|x| x >= 3})

+1

Gracias por la técnica genial;) – Chan

+1

Ruby's ['# delete_if'] (http://ruby-doc.org/core-2.2.0/Array.html#method-i-delete_if) y [' #reject! '] (http://ruby-doc.org/core-2.2.0/Array.html#method-i-reject-21) son sli terriblemente diferente. 'reject!' devuelve 'nil' si no se cambiaron los elementos y cambia la matriz cada vez que se llama al bloque. – jwadsack

8
a = [ "a", "b", "c" ] 
    a.delete_if {|x| x >= "b" } #=> ["a"] 
9

Probablemente la pena señalar que

array.reject! {|x| x < 3} 

y

array.delete_if {|x| x < 3} 

son los mismos, pero

array.reject {|x| x < 3} 

seguirá siendo devolver el mismo resultado, pero no cambiar la "matriz" .

0

Esto funciona bien para números y letras en orden alfabético. se comparan sus valores, ¿qué pasa si las condiciones cambian?

array = ["Type", ": Jointed", "Axes", ": 6", "Reach", ": 951 mm", "Capacity", ": 6 Kg", "Uses", ": ", "Arc welding, material handling, machine loading, application", "This particular unit is in excellent condition with under 700 hours."] 

Tenemos que eliminar todos los elemetns después de la "usos" valor ejemplo:

array = ["Type", ": Jointed", "Axes", ": 6", "Reach", ": 951 mm", "Capacity", ": 6 Kg"] 

lo tanto, que desition no está funcionando (que acaba de quitar un elemento):

array.delete_if {|x| x >= "Uses" } 
["Type", ": Jointed", "Axes", ": 6", "Reach", ": 951 mm", "Capacity", ": 6 Kg", ": ", "Arc welding, material handling, machine loading, application", "This particular unit is in excellent condition with under 700 hours."] 
Cuestiones relacionadas