この記事ではmacOS Catalina10.15.6にインストールしたRuby 2.6.5を使っています。
#二次元配列とは
- __配列の中に配列が入っている形__です。
- items_priceのハッシュの中にそれぞれのアイテムが配列として格納されています。
- さらに、1つ1つのアイテムの中にも名前と値段の配列が入っています。
items_price = [["pen", [100, 200, 120]], ["book", [120, 150, 220]], ["pen_case", [1000, 1500]]]
#二次元配列を取り出すには
- each文を使ってハッシュを取り出します。
- 今回は二次元なので2回each文を使っているのですね。
items_price = [["pen", [100, 200, 120]], ["book", [120, 150, 220]], ["pen_case", [1000, 1500]]]
items_price.each do |item|
sum = 0
item[1].each do |price|
sum += price
end
puts "#{item[0]}の値段は#{sum}円です。"
end
では、penを例に取って一つずつみていきます。
1回目のeach(2行目)
items_price.each do |item| ~ end
# => items_price配列の中の["pen", [100, 200, 120]]を取り出し、ブロック変数itemに代入
2回目のeach(4行目)
item[1].each do |price| ~ end
# => item配列の中の[100, 200, 120]を取り出し、ブロック変数priceに代入
- ちなみに、item[1]はprice配列の要素の数、つまりここでは3回繰り返すことになります。
出力する
puts "#{item[0]}の値段は#{sum}円です。"
- item[0]はitem配列の添字が0、["pen", [100, 200, 120]]の"pen"の部分になります。
#結果
penの値段は420円です。
bookの値段は490円です。
pen_caseの値段は2500円です。