gre*_*tes 20 ruby ruby-on-rails
众所周知,从数组中Array#compact删除nil元素.
array.reject { |element| element.empty? }
将删除空元素[](在轨道中你也可以做到#blank?摆脱空元素和 nil元素).
是否有一种简短的方法来删除空/空白元素,如Array#compact?或者是用Array#reject我最好的赌注?
#compact如果有的话,我还没有看到"空"的等价物.但也许我只是忽略它.
Mat*_*ira 26
就在这里!
array.reject &:empty?
Run Code Online (Sandbox Code Playgroud)
然而,正如scarver2和Hoang Le所解释的那样,NoMethodError如果数组包含,则会失败nil.
如果您使用的是Rails或Active Support,则可以安全地编写:
array.reject &:blank?
Run Code Online (Sandbox Code Playgroud)
因为所有对象都会响应blank?,所以不会出现错误,包括nil.
还有另一种方法可以做到这一点,因为mu太短了:
array.select &:present?
Run Code Online (Sandbox Code Playgroud)
它似乎present?是以blank?两者都适当的方式实施的.
从 Rails 6.1.3.1 开始,您拥有compact_blank:
array = ["a", "", nil, false, [], {}]
array.compact_blank
#=> ["a"]
Run Code Online (Sandbox Code Playgroud)
正如它在 上的定义Enumerable,您也可以在哈希上使用它。
| 归档时间: |
|
| 查看次数: |
6886 次 |
| 最近记录: |