2012-08-14 3 views
1

좋아, 그래서 나는 배열이 있습니다Ruby에서 배열을 어떻게 분리합니까?

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

을 나는 조건부

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

와 내가 필요로하는 numbers = ["5"]를 포함하는 하나 개의 배열 numbers이며, 다른 두 배열로 배열을 분할해야 거부가있는 배열 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

멋진 한 줄. 좀 더 자세한 정보를 제출하겠습니다. –

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 (: <))'. ;-) –

관련 문제