我有一个数组......说
arr= [:a, :b, :c, :d, :b, :a, :q]
我希望删除所有:b
和:c
我可以在一行中使用.delete
方法完成此操作吗?
我知道arr.delete(:b)
会删除:b
,我知道arr.delete(:c)
会删除:c
,但如何删除一行?
我尝试了不同的变体:
arr.delete(:c,:d)
没有运气。
答案 0 :(得分:7)
IMO您可以在这种情况下使用delete_if
:
array = [ :a, :b, :c ]
array.delete_if {|x| [:b,:c].include?(x) } #=> [:a]
的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]
答案 2 :(得分:3)
你也可以使用拒绝!为此:
arr.reject!{|element| [:b, :c].include?(element)} #=> [:a, :d, :a, :q]