配列の入子構造を紐解く
配列の入れ子構造を紐解いていきたいと思います。これからこちらのデータを使っていきたいと思います。
vegetables_price = [["cabbage", [200, 100, 320]], ["onion", [100, 210, 80]],
["carrots", [120, 150]]]
ここからそれぞれの野菜の合計金額を算出してみたいと思います。
- each文を使ってみる
- 添字を利用してみる
- vegetable[1]で繰り返し処理をする
以上の流れで説明していきます。
1. each文を使ってみる
まずeach文を使って全ての情報を表示できるようにしてみました。
vegetables_price.each do |vegetable|
puts vegetable
end
上記のコードを実行すると実行結果は以下のようになりました。
cabbage
200
100
320
onion
100
210
80
carrots
120
150
2. 添字を利用してみる
ここからさらに取り出す値を絞るために配列の中の配列の添字を指定してみました。
vegetables_price.each do |vegetable|
puts vegetable[0]
end
vegetable[0]とすると全ての野菜だけが出力されます。
cabbage
onion
carrots
今度はvegetable[1]にしてみました。
vegetables_price.each do |vegetable|
puts vegetable[1]
end
すると価格が全て表示されました。このvegetable[1]が使えそうです。
200
100
320
100
210
80
120
150
3. vegetable[1]で繰り返し処理をする
今度はさらにこのvegetable[1]の中身を区別できるようにしたいと思います。vegetable[1]の中身は上記で示しています。野菜ごとに分けて合計金額を算出するためにeach文を使ってみることにしました。
vegetables_price.each do |vegetable|
sum = 0
vegetable[1].each do |price|
sum += price
end
puts sum
end
これで各野菜の合計金額が算出されました。
620
390
270
またどの野菜の合計金額がどれかが分かるように野菜の名前も出力されるようにしました。
vegetables_price = [["cabbage", [200, 100, 320]], ["onion", [100, 210, 80]],
["carrots", [120, 150]]]
vegetables_price.each do |vegetable|
sum = 0
vegetable[1].each do |price|
sum += price
end
puts "#{vegetable[0]}の合計金額は#{sum}です"
end
これで出力結果は以下のようになりました。
cabbageの合計金額は620です
onionの合計金額は390です
carrotsの合計金額は270です
以上です。