2011-02-15 11 views

cevap

51
kullanabilirsiniz

ya new_array = array.reject {|x| x < 3} (reject döner yeni dizi) veya array.reject! {|x| x < 3} (delete_if aka reject! yerinde diziyi değiştirir).

da bunları reddetmek değil, unsurları tutmak için koşul belirtmek dışında reject gibi davranır, hangi select yöntem (biraz daha yaygın) var (yani elemanlar 3'ten az kurtulmak için, size new_array = array.select {|x| x >= 3} kullanırsınız).

+1

Serin teknik için teşekkürler;) – Chan

+1

Ruby's ['# delete_if'] (http://ruby-doc.org/core-2.2.0/Array.html#method-i-delete_if) ve [' #reject! '] (http://ruby-doc.org/core-2.2.0/Array.html#method-i-reject-21) kayıyor çok farklı. 'reddetme!', hiçbir öğe değiştirilmediyse nil 'değerini döndürür ve blok her çağrıldığında diziyi değiştirir. – jwadsack

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

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

ve

array.delete_if {|x| x < 3} 

aynı mı olduğunu işaret Muhtemelen değer, ama

array.reject {|x| x < 3} 

hala aynı sonucu döndüren, ancak "dizi" değişmez Will .

0

Alfabetik sırayla harfler ve sayılar için iyi çalışır. Değerleri karşılaştırılır, koşullar değişirse ne olur?

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."] 

Biz değerini örneği "kullanır" sonuçta elemetns silmeniz gerekir:

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

Yani, bu desition çalışmıyor (sadece bir elemanını kaldırmak):

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."] 
İlgili konular