dogwood008の開発メモ!

最近のマイブームは機械学習, Ruby on Rails。中でも機械学習を使った金融商品の自動取引に興味があります。

【Ruby】Array#filter と Array#map を組み合わせて使うなら、 Array#filter_map というメソッドがあるよ

要旨

「3の倍数と3のつく数字」だけを String に変換した Array<String> を得る方法:

(1..100).filter_map { |i|
  i.to_s if i % 3 == 0 || i.to_s.include?('3')
}.to_a
# => ["3", "6", "9", "12", "13", "15", "18",
# "21", "23", "24", "27", "30", "31", "32",
# "33", "34", "35", "36", "37", "38", "39",
# "42", "43", "45", "48", "51", "53", "54",
# "57", "60", "63", "66", "69", "72", "73",
# "75", "78", "81", "83", "84", "87", "90",
# "93", "96", "99"]

詳細

正確には Array#filter_map ではなく Enumerable#filter_map なので、EnumerableなオブジェクトならArrayでなくても何でも良い。

参考

docs.ruby-lang.org

techtechmedia.com

k-koh.hatenablog.com