从另一个数组中删除1个ruby数组中的项目

时间:2015-01-28 13:33:42

标签: ruby

我在rails中有一个数组,为了简单起见,我们要说是

@users = current_account.users

我还有其他几个数组,其中包含第一个数组的子集。这些看起来像这样

@missing_genders = @users.select{ |u| u.gender.nil?}
@missing_reference = @users.select{ |u| u.reference_number.nil?}

我也有其他几个这样的人。我需要的是生成一个没有错误的所有用户的列表。那么基本上第一个数组中的每个人都不存在于任何其他数组中?

通过它思考,我有

@main_array = [1,2,3,4,5]
@error_array_1 = [1]
@error_array_2 = [1,2,3]

我正在寻找生成

@final_array = [4,5]

2 个答案:

答案 0 :(得分:4)

答案很简单,你想从主数组中减去error_arrays,如下所示:

@final_array = @main_array - @error_array_1 - @error_array_2
=> [4, 5]

答案 1 :(得分:0)

如果您有许多数组,这是这样做的方法:

main_array = [1,2,3,4,5,6]
error_array_1 = [1]
error_array_2 = [1,2,3]
error_array_4 = [6]

p [main_array,error_array_1,error_array_2,error_array_4].reduce(:-) #=> [4, 5]