名前のとおり、filter
とmap
メソッドを組み合わせた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.
ブロック内で真と評価された要素を返した新しい配列をつくる。
例:
ary = [1, 2, 3, 4].filter_map do |num| num.even? ? num * 2 : nil end p ary => [4, 8]
以下にわかりやすい解説があった。
なお、単純なfilter
メソッドの場合は、各要素にたいしてブロックが評価した値が真だった要素をすべて含んだ配列を返す。
p [1, 2, 3, 4].filter(&:even?) => [2, 4]