从另一个数组中删除数组元素

sid*_*ney 2 ruby arrays optimization ruby-on-rails

我有2个阵列:

a = [1,2,3,4,5]
b = [4,5,6,7,8]
Run Code Online (Sandbox Code Playgroud)

我想删除a每个b元素,以便拥有[1,2,3]

当然,我的真实阵列是不同的.

我想用一个简单的方法得到一个漂亮的答案,因为我可以通过使用这个循环解决这个问题,但我发现它很难看.

b.each do |e|
  a.delete(e) if a.include?(e)
end
return a
Run Code Online (Sandbox Code Playgroud)

似乎reject可能是要走的路,但找不到好方法.谢谢

Aru*_*hit 6

只需按照以下方式使用Array Difference: -

a = [1,2,3,4,5]
b = [4,5,6,7,8]
a = a - b
a # => [1,2,3]
Run Code Online (Sandbox Code Playgroud)

但我建议,不要修改源数组.相反

new_ary = a - b
Run Code Online (Sandbox Code Playgroud)