ruby-on-rails - 空元素是否有等效的 Array#compact ?

标签 ruby-on-rails ruby

众所周知,Array#compact 从数组中删除了 nil 元素。

array.reject { |元素|元素.空? }

会删除像 [] 这样的空元素(在 rails 中你也可以使用 #blank? 来删除空元素 元素)。

有没有像 Array#compact 这样的删除空/空白元素的简写方法?还是使用 Array#reject 是我最好的选择?

我还没有看到 #compact 的“空”等价物,如果有的话。但也许我只是忽略了它。

最佳答案

是的!

array.reject &:empty?

然而,作为scarver2Hoang Le解释说,这将失败并显示 NoMethodError如果数组包含 nil


如果您使用 RailsActive Support ,你可以安全地写:

array.reject &:blank?

不会有错误,因为所有对象都响应 blank? , including nil .

还有另一种方法,如 mu is too short 所建议的那样:

array.select &:present?

好像present?是根据 blank? 实现的,所以两者都是合适的。

关于ruby-on-rails - 空元素是否有等效的 Array#compact ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17204461/

相关文章:

mysql - 当通过关联在 has_many 上使用包含时,rails 4 保留连接对象顺序

ruby-on-rails - 在 mongo ruby​​ 驱动程序中使用 DBRef:(#<Mongo::DBRef:0x0056466ed55e48> 的未定义方法 `bson_type')

ruby-on-rails - 从 Ruby 中的数组中删除重复元素

ruby-on-rails - 如何设置延迟作业和事件作业队列中的优先级?

ruby - 使用 Ruby 合并和更新 Redis 中的哈希键

ruby-on-rails - Rails + Mongoid - 不要在 JSON 中返回 nil 值

ruby-on-rails - 制作一个新数组被认为是动态分配 Ruby

ruby-on-rails - AWS Elastic Beanstalk Rails 应用程序自动缩放问题

mysql - 有效地组合和查询多个表(STI 与 MTI)

javascript - Javascript 中带父级和不带父级的 json 上的 .map 方法