1

わかりましたので、配列があります:

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

そして、条件付きで配列を2つの配列に分割する必要があります

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

そして、私が必要とするのはnumbers、含む1つの配列numbers = ["5"]と拒否された別の配列ですrejects = ["2", "3", "4"]

どうすればいいですか?...ループでとても簡単に思えますが、ワンライナーでこれを行う方法はありますか?

4

2 に答える 2

6

チェックアウトEnumerable#partition

arr = ["2", "3", "4", "5"]
numbers, rejects = arr.partition{ |x| x.to_i > 4 }
 # numbers = ["5"]
 # rejects = ["2", "3", "4"]
于 2012-08-14T19:10:28.530 に答える
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(", ")

出力:

   元の配列:2、3、4、5
   数字>4:5
   その他すべて:2、3、4
于 2012-08-14T19:15:02.950 に答える