2012-08-14 51 views
1

好了,我有一個數組:如何在Ruby中分隔數組?

numbers = ["2", "3", "4", "5"] 

,我需要陣列與條件

numbers.reject!{|x| x > 4 } 

和我需要的是一個陣列numbers含有numbers = ["5"]和另一個分割成兩個陣列陣列與拒絕rejects = ["2", "3", "4"]

我該怎麼做? ...循環似乎很容易,但是有一種方法可以在一個班輪中完成這個任務嗎?

回答

6

退房Enumerable#partition

arr = ["2", "3", "4", "5"] 
numbers, rejects = arr.partition{ |x| x.to_i > 4 } 
# numbers = ["5"] 
# rejects = ["2", "3", "4"] 
+0

尼斯一班輪。我將提交更詳細的一個。 – 2012-08-14 19:14:22

1
numbers = [2, 3, 4, 5] 

n_gt_four = numbers.select{|n| n > 4} 
n_all_else = numbers - n_gt_four 

puts "Original array: " + numbers.join(", ") 
puts "Numbers > 4: " + n_gt_four.join(", ") 
puts "All else: " + n_all_else.join(", ") 

輸出:

 
    Original array: 2, 3, 4, 5 
    Numbers > 4: 5 
    All else: 2, 3, 4 
+4

只是因爲我的心情很糟糕:'n_gt_four = numbers.select(&4.method(:<))'。 ;-) – 2012-08-14 19:23:01