使用.delete删除数组的两个元素

时间:2013-10-25 02:47:20

标签: ruby arrays

我有一个数组......说

arr= [:a, :b, :c, :d, :b, :a, :q]

我希望删除所有:b:c

我可以在一行中使用.delete方法完成此操作吗?

我知道arr.delete(:b)会删除:b,我知道arr.delete(:c)会删除:c,但如何删除一行?

我尝试了不同的变体:

arr.delete(:c,:d)

没有运气。

3 个答案:

答案 0 :(得分:7)

IMO您可以在这种情况下使用delete_if

array = [ :a, :b, :c ]
array.delete_if {|x| [:b,:c].include?(x) }   #=> [:a]

有关Array#delete_if

delete_if的更多信息

答案 1 :(得分:4)

Array#-(差异):

> [:a, :b, :c, :d, :b, :a, :q]   # => [:a, :b, :c, :d, :b, :a, :q]
> a - [:b, :c]                   # => [:a, :d, :a, :q]

还有其他基本的设定操作,例如Array#+(联盟)和Array#&(十字路口)。

答案 2 :(得分:3)

你也可以使用拒绝!为此:

arr.reject!{|element| [:b, :c].include?(element)} #=> [:a, :d, :a, :q]