each_with_indexとは
eachメソッドの効果に加えて、配列の要素の番号も扱うことができるメソッド。
書き方
fruits=[“いちご”, “バナナ”, “みかん”]
fruits.each_with_index do |item, i|
puts “#{i}番目の果物は#{item}です。”
end
【出力結果】
0番目の要素はいちごです。
1番目の要素はバナナです。
2番目の要素はみかんです。
といった結果になります!
each.with_indexの違い
each.with_indexを使えば、手軽に0以外の値から開始させることができる。
fruits=[“いちご”, “バナナ”, “みかん”]
fruits.each.with_index(10) do |item, i|
puts “#{i}番目の果物は#{item}です。”
end
【出力結果】
10番目の要素はいちごです。
11番目の要素はバナナです。
12番目の要素はみかんです。
といった結果になります!
##each_with_objectとは
与えられた任意のオブジェクトと要素をブロックに渡し繰り返し、最初に与えられたオブジェクトを返します。
-例-
arr = [1, 2, 3]
result = arr.each_with_object([]) do |item, memo|
p item # => 1...
memo << 1
end
pp result # => [1, 1, 1]
result = arr.each_with_object([1, 2, 3]) do |item, memo|
memo << 1
end
pp result # => [1, 2, 3, 1, 1, 1]
result = arr.each_with_object([]) do |i, a|
a << i*2
end
pp result # => [2, 4, 6]
まとめ
自動で番号を振り分けてみたい時に使用してみましょう!!