1

我有一个数组...说

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

我想删除所有:band:c

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

我知道这arr.delete(:b)会删除:b,我知道arr.delete(:c)会删除:c,但是如何在一行中删除两者?

我尝试了不同的变体:

arr.delete(:c,:d)

没有运气。

4

3 回答 3

7

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

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

更多关于Array#delete_if delete_if

于 2013-10-25T02:52:57.057 回答
4

Array#-(差异):

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

还有其他基本的集合操作,例如Array#+(union) 和Array#&(intersection)。

于 2013-10-25T02:52:46.563 回答
3

您也可以使用拒绝!为了这:

arr.reject!{|element| [:b, :c].include?(element)} #=> [:a, :d, :a, :q] 
于 2015-04-15T07:50:18.487 回答