結論
eachが元の配列
mapが処理後の配列
を返します。
具体例
例として、1〜3にそれぞれ1を足すとします。
eachの場合、返り値は元の配列になるので、[1, 2, 3]になります。
処理結果を取得する場合、eachブロック外で変数を定義(num = [])し、ブロック内で保存する必要があります。
num = []
[1, 2, 3].each do |i|
# ブロック内で保存
num << i + 1
end
# =>[2, 3, 4]
一方mapの場合、返り値は処理結果の配列となります。
そのまま使用することができるので、以下の場合は[2, 3, 4]となります。
[1, 2, 3].map do |i|
i + 1
end
# =>[2, 3, 4]