Just do IT

思うは招く

Ruby 2.7.0 から使える filter_map メソッドを知った

名前のとおり、filtermapメソッドを組み合わせたfilter_mapメソッドを知った。Ruby 2.7.0 から追加された。

Returns a new array containing the truthy results (everything except false or nil) of running the block for every element in enum.

ruby-doc.org

ブロック内で真と評価された要素を返した新しい配列をつくる。

例:

ary = [1, 2, 3, 4].filter_map do |num|
  num.even? ? num * 2 : nil
end
p ary
=> [4, 8]

以下にわかりやすい解説があった。

blog.saeloun.com

なお、単純なfilterメソッドの場合は、各要素にたいしてブロックが評価した値が真だった要素をすべて含んだ配列を返す。

p [1, 2, 3, 4].filter(&:even?)
=> [2, 4]

docs.ruby-lang.org