众所周知,Array#compact
从数组中删除了 nil
元素。
array.reject { |元素|元素.空? }
会删除像 []
这样的空元素(在 rails 中你也可以使用 #blank?
来删除空元素 和 无
元素)。
有没有像 Array#compact
这样的删除空/空白元素的简写方法?还是使用 Array#reject
是我最好的选择?
我还没有看到 #compact
的“空”等价物,如果有的话。但也许我只是忽略了它。
最佳答案
是的!
array.reject &:empty?
然而,作为scarver2和 Hoang Le解释说,这将失败并显示 NoMethodError
如果数组包含 nil
。
如果您使用 Rails或 Active 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/