1

好的,所以我有一个数组:

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

我需要将数组分成两个有条件的数组

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

我需要的是一个numbers包含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 回答