deletey替代delete_if / reject以从数组中删除项目

时间:2014-08-29 19:45:16

标签: ruby

我知道从数组中删除项目的以下两种方法:

a.delete_if {|x| x >= "b" } 
array.reject {|x| x < 3}

但它们都不能满足我的需求。我需要一种方法来指定一种干净的方法来识别要从数组中删除的项目。像这样:

Model.column_names # => [:age, :name, :created_at, :updated_at]
Model.column_names.discard :created_at, :updated_at
Model.column_names # => [:age, :name]

丢弃可以使用无限量的符号。

2 个答案:

答案 0 :(得分:4)

怎么样?

Model.column_names # => [:age, :name, :created_at, :updated_at]
Model.column_names -= [:created_at, :updated_at]
Model.column_names # => [:age, :name]

答案 1 :(得分:1)

这种方式有reject ...

Model.column_names.reject {|x| [:created_at, :updated_at].include?(x) }

另一种方式是使用select ...

Model.column_names.select {|x| not [:created_at, :updated_at].include?(x) }